]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oyejorge/less.php/lib/Less/Visitor.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / lib / Less / Visitor.php
diff --git a/vendor/oyejorge/less.php/lib/Less/Visitor.php b/vendor/oyejorge/less.php/lib/Less/Visitor.php
new file mode 100644 (file)
index 0000000..d85f1d9
--- /dev/null
@@ -0,0 +1,49 @@
+<?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;
+       }
+}
+