]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oyejorge/less.php/lib/Less/Tree/Operation.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / lib / Less / Tree / Operation.php
diff --git a/vendor/oyejorge/less.php/lib/Less/Tree/Operation.php b/vendor/oyejorge/less.php/lib/Less/Tree/Operation.php
new file mode 100644 (file)
index 0000000..e69e0da
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * Operation
+ *
+ * @package Less
+ * @subpackage tree
+ */
+class Less_Tree_Operation extends Less_Tree{
+
+       public $op;
+       public $operands;
+       public $isSpaced;
+       public $type = 'Operation';
+
+       /**
+        * @param string $op
+        */
+       public function __construct($op, $operands, $isSpaced = false){
+               $this->op = trim($op);
+               $this->operands = $operands;
+               $this->isSpaced = $isSpaced;
+       }
+
+    public function accept($visitor) {
+               $this->operands = $visitor->visitArray($this->operands);
+       }
+
+       public function compile($env){
+               $a = $this->operands[0]->compile($env);
+               $b = $this->operands[1]->compile($env);
+
+
+               if( Less_Environment::isMathOn() ){
+
+                       if( $a instanceof Less_Tree_Dimension && $b instanceof Less_Tree_Color ){
+                               $a = $a->toColor();
+
+                       }elseif( $b instanceof Less_Tree_Dimension && $a instanceof Less_Tree_Color ){
+                               $b = $b->toColor();
+
+                       }
+
+                       if( !method_exists($a,'operate') ){
+                               throw new Less_Exception_Compiler("Operation on an invalid type");
+                       }
+
+                       return $a->operate( $this->op, $b);
+               }
+
+               return new Less_Tree_Operation($this->op, array($a, $b), $this->isSpaced );
+       }
+
+
+    /**
+     * @see Less_Tree::genCSS
+     */
+    public function genCSS( $output ){
+               $this->operands[0]->genCSS( $output );
+               if( $this->isSpaced ){
+                       $output->add( " " );
+               }
+               $output->add( $this->op );
+               if( $this->isSpaced ){
+                       $output->add( ' ' );
+               }
+               $this->operands[1]->genCSS( $output );
+       }
+
+}