qrcode.chapril.org/vendor/wikimedia/less.php/lib/Less/VisitorReplacing.php

67 lines
1.2 KiB
PHP
Raw Normal View History

2021-02-15 21:29:38 +01:00
<?php
/**
2023-07-07 22:33:10 +02:00
* @private
2021-02-15 21:29:38 +01:00
*/
class Less_VisitorReplacing extends Less_Visitor {
public function visitObj( $node ) {
2023-07-07 22:33:10 +02:00
$funcName = 'visit' . $node->type;
2021-02-15 21:29:38 +01:00
if ( isset( $this->_visitFnCache[$funcName] ) ) {
$visitDeeper = true;
$node = $this->$funcName( $node, $visitDeeper );
if ( $node ) {
if ( $visitDeeper && is_object( $node ) ) {
$node->accept( $this );
}
2023-07-07 22:33:10 +02:00
$funcName .= "Out";
2021-02-15 21:29:38 +01:00
if ( isset( $this->_visitFnCache[$funcName] ) ) {
$this->$funcName( $node );
}
}
} else {
$node->accept( $this );
}
return $node;
}
public function visitArray( $nodes ) {
2023-07-07 22:33:10 +02:00
$newNodes = [];
2021-02-15 21:29:38 +01:00
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;
}
}