diff options
Diffstat (limited to 'lib/less.php/Visitor/extendFinder.php')
-rw-r--r-- | lib/less.php/Visitor/extendFinder.php | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/lib/less.php/Visitor/extendFinder.php b/lib/less.php/Visitor/extendFinder.php deleted file mode 100644 index 22b3aac..0000000 --- a/lib/less.php/Visitor/extendFinder.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -/** - * Extend Finder Visitor - * - * @package Less - * @subpackage visitor - */ -class Less_Visitor_extendFinder extends Less_Visitor{ - - public $contexts = array(); - public $allExtendsStack; - public $foundExtends; - - public function __construct(){ - $this->contexts = array(); - $this->allExtendsStack = array(array()); - parent::__construct(); - } - - /** - * @param Less_Tree_Ruleset $root - */ - public function run($root){ - $root = $this->visitObj($root); - $root->allExtends =& $this->allExtendsStack[0]; - return $root; - } - - public function visitRule($ruleNode, &$visitDeeper ){ - $visitDeeper = false; - } - - public function visitMixinDefinition( $mixinDefinitionNode, &$visitDeeper ){ - $visitDeeper = false; - } - - public function visitRuleset($rulesetNode){ - - if( $rulesetNode->root ){ - return; - } - - $allSelectorsExtendList = array(); - - // get &:extend(.a); rules which apply to all selectors in this ruleset - if( $rulesetNode->rules ){ - foreach($rulesetNode->rules as $rule){ - if( $rule instanceof Less_Tree_Extend ){ - $allSelectorsExtendList[] = $rule; - $rulesetNode->extendOnEveryPath = true; - } - } - } - - - // now find every selector and apply the extends that apply to all extends - // and the ones which apply to an individual extend - foreach($rulesetNode->paths as $selectorPath){ - $selector = end($selectorPath); //$selectorPath[ count($selectorPath)-1]; - - $j = 0; - foreach($selector->extendList as $extend){ - $this->allExtendsStackPush($rulesetNode, $selectorPath, $extend, $j); - } - foreach($allSelectorsExtendList as $extend){ - $this->allExtendsStackPush($rulesetNode, $selectorPath, $extend, $j); - } - } - - $this->contexts[] = $rulesetNode->selectors; - } - - public function allExtendsStackPush($rulesetNode, $selectorPath, $extend, &$j){ - $this->foundExtends = true; - $extend = clone $extend; - $extend->findSelfSelectors( $selectorPath ); - $extend->ruleset = $rulesetNode; - if( $j === 0 ){ - $extend->firstExtendOnThisSelectorPath = true; - } - - $end_key = count($this->allExtendsStack)-1; - $this->allExtendsStack[$end_key][] = $extend; - $j++; - } - - - public function visitRulesetOut( $rulesetNode ){ - if( !is_object($rulesetNode) || !$rulesetNode->root ){ - array_pop($this->contexts); - } - } - - public function visitMedia( $mediaNode ){ - $mediaNode->allExtends = array(); - $this->allExtendsStack[] =& $mediaNode->allExtends; - } - - public function visitMediaOut(){ - array_pop($this->allExtendsStack); - } - - public function visitDirective( $directiveNode ){ - $directiveNode->allExtends = array(); - $this->allExtendsStack[] =& $directiveNode->allExtends; - } - - public function visitDirectiveOut(){ - array_pop($this->allExtendsStack); - } -} - - |