summaryrefslogtreecommitdiffstats
path: root/library/vendor/lessphp/lib/Less/Visitor/joinSelector.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--library/vendor/lessphp/lib/Less/Visitor/joinSelector.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/library/vendor/lessphp/lib/Less/Visitor/joinSelector.php b/library/vendor/lessphp/lib/Less/Visitor/joinSelector.php
new file mode 100644
index 0000000..bb08ece
--- /dev/null
+++ b/library/vendor/lessphp/lib/Less/Visitor/joinSelector.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Join Selector Visitor
+ *
+ * @package Less
+ * @subpackage visitor
+ */
+class Less_Visitor_joinSelector extends Less_Visitor {
+
+ public $contexts = array( array() );
+
+ /**
+ * @param Less_Tree_Ruleset $root
+ */
+ public function run( $root ) {
+ return $this->visitObj( $root );
+ }
+
+ public function visitRule( $ruleNode, &$visitDeeper ) {
+ $visitDeeper = false;
+ }
+
+ public function visitMixinDefinition( $mixinDefinitionNode, &$visitDeeper ) {
+ $visitDeeper = false;
+ }
+
+ public function visitRuleset( $rulesetNode ) {
+ $paths = array();
+
+ if ( !$rulesetNode->root ) {
+ $selectors = array();
+
+ if ( $rulesetNode->selectors && $rulesetNode->selectors ) {
+ foreach ( $rulesetNode->selectors as $selector ) {
+ if ( $selector->getIsOutput() ) {
+ $selectors[] = $selector;
+ }
+ }
+ }
+
+ if ( !$selectors ) {
+ $rulesetNode->selectors = null;
+ $rulesetNode->rules = null;
+ } else {
+ $context = end( $this->contexts ); // $context = $this->contexts[ count($this->contexts) - 1];
+ $paths = $rulesetNode->joinSelectors( $context, $selectors );
+ }
+
+ $rulesetNode->paths = $paths;
+ }
+
+ $this->contexts[] = $paths; // different from less.js. Placed after joinSelectors() so that $this->contexts will get correct $paths
+ }
+
+ public function visitRulesetOut() {
+ array_pop( $this->contexts );
+ }
+
+ public function visitMedia( $mediaNode ) {
+ $context = end( $this->contexts ); // $context = $this->contexts[ count($this->contexts) - 1];
+
+ if ( !count( $context ) || ( is_object( $context[0] ) && $context[0]->multiMedia ) ) {
+ $mediaNode->rules[0]->root = true;
+ }
+ }
+
+}