12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?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;
- }
- }
|