summaryrefslogtreecommitdiffstats
path: root/vendor/wikimedia/less.php/lib/Less/Tree/Operation.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/wikimedia/less.php/lib/Less/Tree/Operation.php')
-rw-r--r--vendor/wikimedia/less.php/lib/Less/Tree/Operation.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/wikimedia/less.php/lib/Less/Tree/Operation.php b/vendor/wikimedia/less.php/lib/Less/Tree/Operation.php
new file mode 100644
index 0000000..4d79dc0
--- /dev/null
+++ b/vendor/wikimedia/less.php/lib/Less/Tree/Operation.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * @private
+ */
+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, [ $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 );
+ }
+
+}