Skip to content

Commit 236f16b

Browse files
committed
Allow '@import' directives in any selector
Add --strict-imports option to disable for perf reasons.
1 parent 598b249 commit 236f16b

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

bin/lessc

+7-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ var options = {
1313
optimization: 1,
1414
silent: false,
1515
paths: [],
16-
color: true
16+
color: true,
17+
strictImports: false
1718
};
1819

1920
args = args.filter(function (arg) {
@@ -39,6 +40,9 @@ args = args.filter(function (arg) {
3940
case 'silent':
4041
options.silent = true;
4142
break;
43+
case 'strict-imports':
44+
options.strictImports = true;
45+
break;
4246
case 'h':
4347
case 'help':
4448
sys.puts("usage: lessc source [destination]");
@@ -92,7 +96,8 @@ var parseLessFile = function (e, data) {
9296
new(less.Parser)({
9397
paths: [path.dirname(input)].concat(options.paths),
9498
optimization: options.optimization,
95-
filename: input
99+
filename: input,
100+
strictImports: options.strictImports
96101
}).parse(data, function (err, tree) {
97102
if (err) {
98103
less.writeError(err, options);

lib/less/parser.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,7 @@ less.Parser = function Parser(env) {
989989
}
990990

991991
if (selectors.length > 0 && (rules = $(this.block))) {
992-
return new(tree.Ruleset)(selectors, rules);
992+
return new(tree.Ruleset)(selectors, rules, env.strictImports);
993993
} else {
994994
// Backtrack
995995
furthest = i;

lib/less/tree/ruleset.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
(function (tree) {
22

3-
tree.Ruleset = function (selectors, rules) {
3+
tree.Ruleset = function (selectors, rules, strictImports) {
44
this.selectors = selectors;
55
this.rules = rules;
66
this._lookups = {};
7+
this.strictImports = strictImports;
78
};
89
tree.Ruleset.prototype = {
910
eval: function (env) {
1011
var selectors = this.selectors && this.selectors.map(function (s) { return s.eval(env) });
11-
var ruleset = new(tree.Ruleset)(selectors, this.rules.slice(0));
12+
var ruleset = new(tree.Ruleset)(selectors, this.rules.slice(0), this.strictImports);
1213

1314
ruleset.root = this.root;
1415
ruleset.allowImports = this.allowImports;
@@ -17,7 +18,7 @@ tree.Ruleset.prototype = {
1718
env.frames.unshift(ruleset);
1819

1920
// Evaluate imports
20-
if (ruleset.root || ruleset.allowImports) {
21+
if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {
2122
for (var i = 0; i < ruleset.rules.length; i++) {
2223
if (ruleset.rules[i] instanceof tree.Import) {
2324
Array.prototype.splice

0 commit comments

Comments
 (0)