]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - vendor/oyejorge/less.php/lib/Less/VisitorReplacing.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / lib / Less / VisitorReplacing.php
1 <?php
2
3 /**
4  * Replacing Visitor
5  *
6  * @package Less
7  * @subpackage visitor
8  */
9 class Less_VisitorReplacing extends Less_Visitor{
10
11         public function visitObj( $node ){
12
13                 $funcName = 'visit'.$node->type;
14                 if( isset($this->_visitFnCache[$funcName]) ){
15
16                         $visitDeeper = true;
17                         $node = $this->$funcName( $node, $visitDeeper );
18
19                         if( $node ){
20                                 if( $visitDeeper && is_object($node) ){
21                                         $node->accept($this);
22                                 }
23
24                                 $funcName = $funcName . "Out";
25                                 if( isset($this->_visitFnCache[$funcName]) ){
26                                         $this->$funcName( $node );
27                                 }
28                         }
29
30                 }else{
31                         $node->accept($this);
32                 }
33
34                 return $node;
35         }
36
37         public function visitArray( $nodes ){
38
39                 $newNodes = array();
40                 foreach($nodes as $node){
41                         $evald = $this->visitObj($node);
42                         if( $evald ){
43                                 if( is_array($evald) ){
44                                         self::flatten($evald,$newNodes);
45                                 }else{
46                                         $newNodes[] = $evald;
47                                 }
48                         }
49                 }
50                 return $newNodes;
51         }
52
53         public function flatten( $arr, &$out ){
54
55                 foreach($arr as $item){
56                         if( !is_array($item) ){
57                                 $out[] = $item;
58                                 continue;
59                         }
60
61                         foreach($item as $nestedItem){
62                                 if( is_array($nestedItem) ){
63                                         self::flatten( $nestedItem, $out);
64                                 }else{
65                                         $out[] = $nestedItem;
66                                 }
67                         }
68                 }
69
70                 return $out;
71         }
72
73 }
74
75