diff options
Diffstat (limited to 'library/vendor/lessphp/lib/Less/Tree/Extend.php')
-rw-r--r-- | library/vendor/lessphp/lib/Less/Tree/Extend.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/library/vendor/lessphp/lib/Less/Tree/Extend.php b/library/vendor/lessphp/lib/Less/Tree/Extend.php new file mode 100644 index 0000000..4dd3665 --- /dev/null +++ b/library/vendor/lessphp/lib/Less/Tree/Extend.php @@ -0,0 +1,80 @@ +<?php + +/** + * Extend + * + * @package Less + * @subpackage tree + */ +class Less_Tree_Extend extends Less_Tree { + + public $selector; + public $option; + public $index; + public $selfSelectors = array(); + public $allowBefore; + public $allowAfter; + public $firstExtendOnThisSelectorPath; + public $type = 'Extend'; + public $ruleset; + + public $object_id; + public $parent_ids = array(); + + /** + * @param integer $index + */ + public function __construct( $selector, $option, $index ) { + static $i = 0; + $this->selector = $selector; + $this->option = $option; + $this->index = $index; + + switch ( $option ) { + case "all": + $this->allowBefore = true; + $this->allowAfter = true; + break; + default: + $this->allowBefore = false; + $this->allowAfter = false; + break; + } + + // This must use a string (instead of int) so that array_merge() + // preserves keys on arrays that use IDs in their keys. + $this->object_id = 'id_' . $i++; + + $this->parent_ids = array( + $this->object_id => true + ); + } + + public function accept( $visitor ) { + $this->selector = $visitor->visitObj( $this->selector ); + } + + public function compile( $env ) { + Less_Parser::$has_extends = true; + $this->selector = $this->selector->compile( $env ); + return $this; + // return new Less_Tree_Extend( $this->selector->compile($env), $this->option, $this->index); + } + + public function findSelfSelectors( $selectors ) { + $selfElements = array(); + + for ( $i = 0, $selectors_len = count( $selectors ); $i < $selectors_len; $i++ ) { + $selectorElements = $selectors[$i]->elements; + // duplicate the logic in genCSS function inside the selector node. + // future TODO - move both logics into the selector joiner visitor + if ( $i && $selectorElements && $selectorElements[0]->combinator === "" ) { + $selectorElements[0]->combinator = ' '; + } + $selfElements = array_merge( $selfElements, $selectors[$i]->elements ); + } + + $this->selfSelectors = array( new Less_Tree_Selector( $selfElements ) ); + } + +} |