Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
29 / 29 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
1 / 1 |
Less_VisitorReplacing | |
100.00% |
29 / 29 |
|
100.00% |
3 / 3 |
15 | |
100.00% |
1 / 1 |
visitObj | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
6 | |||
visitArray | |
100.00% |
8 / 8 |
|
100.00% |
1 / 1 |
4 | |||
flatten | |
100.00% |
9 / 9 |
|
100.00% |
1 / 1 |
5 |
1 | <?php |
2 | /** |
3 | * @private |
4 | */ |
5 | class Less_VisitorReplacing extends Less_Visitor { |
6 | |
7 | public function visitObj( $node ) { |
8 | $funcName = 'visit' . str_replace( [ 'Less_Tree_', '_' ], '', get_class( $node ) ); |
9 | if ( isset( $this->_visitFnCache[$funcName] ) ) { |
10 | $visitDeeper = true; |
11 | $node = $this->$funcName( $node, $visitDeeper ); |
12 | |
13 | if ( $node ) { |
14 | if ( $visitDeeper && is_object( $node ) ) { |
15 | $node->accept( $this ); |
16 | } |
17 | |
18 | $funcName .= "Out"; |
19 | if ( isset( $this->_visitFnCache[$funcName] ) ) { |
20 | $this->$funcName( $node ); |
21 | } |
22 | } |
23 | |
24 | } else { |
25 | $node->accept( $this ); |
26 | } |
27 | |
28 | return $node; |
29 | } |
30 | |
31 | public function visitArray( $nodes ) { |
32 | $newNodes = []; |
33 | foreach ( $nodes as $node ) { |
34 | $evald = $this->visitObj( $node ); |
35 | if ( $evald ) { |
36 | if ( is_array( $evald ) ) { |
37 | self::flatten( $evald, $newNodes ); |
38 | } else { |
39 | $newNodes[] = $evald; |
40 | } |
41 | } |
42 | } |
43 | return $newNodes; |
44 | } |
45 | |
46 | public function flatten( $arr, &$out ) { |
47 | foreach ( $arr as $item ) { |
48 | if ( !is_array( $item ) ) { |
49 | $out[] = $item; |
50 | continue; |
51 | } |
52 | |
53 | foreach ( $item as $nestedItem ) { |
54 | if ( is_array( $nestedItem ) ) { |
55 | self::flatten( $nestedItem, $out ); |
56 | } else { |
57 | $out[] = $nestedItem; |
58 | } |
59 | } |
60 | } |
61 | |
62 | return $out; |
63 | } |
64 | |
65 | } |