Sha256: 845bed90ee04584546019a95a7d978ff7e1d2b04aac4c57e540bb865e28f215a
Contents?: true
Size: 1.79 KB
Versions: 5
Compression:
Stored size: 1.79 KB
Contents
var Visitor = require("./visitor"); var JoinSelectorVisitor = function() { this.contexts = [[]]; this._visitor = new Visitor(this); }; JoinSelectorVisitor.prototype = { run: function (root) { return this._visitor.visit(root); }, visitRule: function (ruleNode, visitArgs) { visitArgs.visitDeeper = false; }, visitMixinDefinition: function (mixinDefinitionNode, visitArgs) { visitArgs.visitDeeper = false; }, visitRuleset: function (rulesetNode, visitArgs) { var context = this.contexts[this.contexts.length - 1], paths = [], selectors; this.contexts.push(paths); if (! rulesetNode.root) { selectors = rulesetNode.selectors; if (selectors) { selectors = selectors.filter(function(selector) { return selector.getIsOutput(); }); rulesetNode.selectors = selectors.length ? selectors : (selectors = null); if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); } } if (!selectors) { rulesetNode.rules = null; } rulesetNode.paths = paths; } }, visitRulesetOut: function (rulesetNode) { this.contexts.length = this.contexts.length - 1; }, visitMedia: function (mediaNode, visitArgs) { var context = this.contexts[this.contexts.length - 1]; mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia); }, visitDirective: function (directiveNode, visitArgs) { var context = this.contexts[this.contexts.length - 1]; if (directiveNode.rules && directiveNode.rules.length) { directiveNode.rules[0].root = (directiveNode.isRooted || context.length === 0 || null); } } }; module.exports = JoinSelectorVisitor;
Version data entries
5 entries across 5 versions & 2 rubygems