/lib/lessphp/Tree/Operation.php
PHP | 70 lines | 42 code | 16 blank | 12 comment | 7 complexity | dfd3fa0701484387c1a28c9c84e10219 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-2.1, BSD-3-Clause, MIT, GPL-3.0
- <?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 );
- }
- }