join selector visitor creation

This commit is contained in:
Luke Page
2013-03-01 16:38:09 +00:00
parent 59a443556a
commit 054beb2ad2
4 changed files with 43 additions and 2 deletions

View File

@@ -41,6 +41,7 @@ less:
${SRC}/env.js\
${SRC}/visitor.js\
${SRC}/import-visitor.js\
${SRC}/join-selector-visitor.js\
${SRC}/browser.js\
build/amd.js >> ${DIST}
@@echo "})(window);" >> ${DIST}
@@ -64,6 +65,7 @@ rhino:
${SRC}/env.js\
${SRC}/visitor.js\
${SRC}/import-visitor.js\
${SRC}/join-selector-visitor.js\
${SRC}/functions.js\
${SRC}/colors.js\
${SRC}/tree/*.js\

View File

@@ -217,5 +217,6 @@ require('./functions');
require('./colors');
require('./visitor.js');
require('./import-visitor.js');
require('./join-selector-visitor.js');
for (var k in less) { exports[k] = less[k]; }

View File

@@ -0,0 +1,34 @@
(function (tree) {
tree.joinSelectorVisitor = function() {
this.context = [];
this._visitor = new tree.visitor(this);
};
tree.joinSelectorVisitor.prototype = {
run: function (root) {
return this._visitor.visit(root);
},
visitRule: function (ruleNode, visitArgs) {
visitArgs.visitDeeper = false;
return ruleNode;
},
visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
visitArgs.visitDeeper = false;
return mixinDefinitionNode;
},
visitRuleset: function (rulesetNode, visitArgs) {
return rulesetNode;
},
visitMedia: function (rulesetNode, visitArgs) {
return rulesetNode;
},
visitDirective: function (rulesetNode, visitArgs) {
return rulesetNode;
}
};
})(require('./tree'));

View File

@@ -404,8 +404,12 @@ less.Parser = function Parser(env) {
}
try {
var css = evaluate.call(this, evalEnv)
.toCSS([], {
var evaldRoot = evaluate.call(this, evalEnv);
new(tree.joinSelectorVisitor)()
.run(evaldRoot);
var css = evaldRoot.toCSS([], {
compress: options.compress || false,
dumpLineNumbers: env.dumpLineNumbers,
strictUnits: options.strictUnits === false ? false : true});