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