Skip to content

Commit 39f669e

Browse files
committed
Add import visitor
1 parent c56db94 commit 39f669e

File tree

6 files changed

+26
-4
lines changed

6 files changed

+26
-4
lines changed

Makefile

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ less:
4040
${SRC}/tree.js\
4141
${SRC}/env.js\
4242
${SRC}/visitor.js\
43+
${SRC}/import-visitor.js\
4344
${SRC}/browser.js\
4445
build/amd.js >> ${DIST}
4546
@@echo "})(window);" >> ${DIST}
@@ -62,6 +63,7 @@ rhino:
6263
${SRC}/parser.js\
6364
${SRC}/env.js\
6465
${SRC}/visitor.js\
66+
${SRC}/import-visitor.js\
6567
${SRC}/functions.js\
6668
${SRC}/colors.js\
6769
${SRC}/tree/*.js\

lib/less/import-visitor.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
(function (tree) {
2+
tree.importVisitor = function(root) {
3+
this._visitor = new tree.visitor(this);
4+
this._visitor.visit(root);
5+
};
6+
7+
tree.importVisitor.prototype = {
8+
visitImport: function (importNode, visitArgs) {
9+
10+
return importNode;
11+
},
12+
visitRule: function (ruleNode, visitArgs) {
13+
visitArgs.visitDeeper = false;
14+
return ruleNode;
15+
}
16+
};
17+
})(require('./tree'));

lib/less/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -214,5 +214,6 @@ require('./env');
214214
require('./functions');
215215
require('./colors');
216216
require('./visitor.js');
217+
require('./import-visitor.js');
217218

218219
for (var k in less) { exports[k] = less[k]; }

lib/less/parser.js

+2
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,8 @@ less.Parser = function Parser(env) {
467467
]
468468
};
469469
}
470+
471+
new tree.importVisitor(root);
470472

471473
finish = function (e) {
472474
e = error || e || parser.imports.error;

lib/less/tree/extend.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ tree.Extend = function Extend(elements, option, index) {
99
tree.Extend.prototype = {
1010
type: "Extend",
1111
accept: function (visitor) {
12-
this.selector = visitor.visit(this.ruleset);
12+
this.selector = visitor.visit(this.selector);
1313
},
1414
eval: function (env, selectors) {
1515
var selfSelectors = findSelfSelectors(selectors || env.selectors),

lib/less/visitor.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
visitArgs;
2121
if (func) {
2222
visitArgs = {visitDeeper: true};
23-
node = func(node);
23+
node = func(node, visitArgs);
2424
}
25-
if ((!visitArgs || visitArgs.visitDeeper) && node.accept) {
25+
if ((!visitArgs || visitArgs.visitDeeper) && node && node.accept) {
2626
node.accept(this);
2727
}
2828
return node;
2929
},
3030
visitArray: function(nodes) {
31-
var i, newNodes;
31+
var i, newNodes = [];
3232
for(i = 0; i < nodes.length; i++) {
3333
var evald = this.visit(nodes[i]);
3434
if (evald instanceof Array) {

0 commit comments

Comments
 (0)