12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
- /**
- * Visitor
- *
- * @package Less
- * @subpackage visitor
- */
- class Less_Visitor {
- protected $methods = array();
- protected $_visitFnCache = array();
- public function __construct() {
- $this->_visitFnCache = get_class_methods( get_class( $this ) );
- $this->_visitFnCache = array_flip( $this->_visitFnCache );
- }
- public function visitObj( $node ) {
- $funcName = 'visit'.$node->type;
- if ( isset( $this->_visitFnCache[$funcName] ) ) {
- $visitDeeper = true;
- $this->$funcName( $node, $visitDeeper );
- if ( $visitDeeper ) {
- $node->accept( $this );
- }
- $funcName = $funcName . "Out";
- if ( isset( $this->_visitFnCache[$funcName] ) ) {
- $this->$funcName( $node );
- }
- } else {
- $node->accept( $this );
- }
- return $node;
- }
- public function visitArray( $nodes ) {
- array_map( array( $this,'visitObj' ), $nodes );
- return $nodes;
- }
- }
|