mirror of
https://github.com/gtbu/Typesetter-5.3-p8.git
synced 2024-11-21 13:59:11 +01:00
Added Visitor.php less 4.2
This commit is contained in:
parent
9c40a5b167
commit
a6298413fd
2 changed files with 108 additions and 0 deletions
43
include/thirdparty/less.php/Visitor.php
vendored
Normal file
43
include/thirdparty/less.php/Visitor.php
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
class Less_Visitor {
|
||||
|
||||
protected $methods = [];
|
||||
protected $_visitFnCache = [];
|
||||
|
||||
public function __construct() {
|
||||
$this->_visitFnCache = get_class_methods( get_class( $this ) );
|
||||
$this->_visitFnCache = array_flip( $this->_visitFnCache );
|
||||
}
|
||||
|
||||
public function visitObj( $node ) {
|
||||
$funcName = 'visit' . str_replace( [ 'Less_Tree_', '_' ], '', get_class( $node ) );
|
||||
if ( isset( $this->_visitFnCache[$funcName] ) ) {
|
||||
$visitDeeper = true;
|
||||
$this->$funcName( $node, $visitDeeper );
|
||||
|
||||
if ( $visitDeeper ) {
|
||||
$node->accept( $this );
|
||||
}
|
||||
|
||||
$funcName .= "Out";
|
||||
if ( isset( $this->_visitFnCache[$funcName] ) ) {
|
||||
$this->$funcName( $node );
|
||||
}
|
||||
|
||||
} else {
|
||||
$node->accept( $this );
|
||||
}
|
||||
|
||||
return $node;
|
||||
}
|
||||
|
||||
public function visitArray( $nodes ) {
|
||||
foreach ( $nodes as $node ) {
|
||||
$this->visitObj( $node );
|
||||
}
|
||||
return $nodes;
|
||||
}
|
||||
}
|
65
include/thirdparty/less.php/VisitorReplacing.php
vendored
Normal file
65
include/thirdparty/less.php/VisitorReplacing.php
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
class Less_VisitorReplacing extends Less_Visitor {
|
||||
|
||||
public function visitObj( $node ) {
|
||||
$funcName = 'visit' . str_replace( [ 'Less_Tree_', '_' ], '', get_class( $node ) );
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue