Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
Less_VisitorReplacing
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
3 / 3
15
100.00% covered (success)
100.00%
1 / 1
 visitObj
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
6
 visitArray
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
4
 flatten
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
5
1<?php
2/**
3 * @private
4 */
5class 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}