diff --git a/lib/less/tree/ruleset.js b/lib/less/tree/ruleset.js index 2842719e..3238f97a 100644 --- a/lib/less/tree/ruleset.js +++ b/lib/less/tree/ruleset.js @@ -183,14 +183,16 @@ tree.Ruleset.prototype = { // `context` holds an array of arrays. // toCSS: function (env) { - var css = [], // The CSS output + var i, css = [], // The CSS output rules = [], // node.Rule instances _rules = [], // rulesets = [], // node.Ruleset instances + ruleNodes = [], + rulesetNodes = [], selector, // The fully rendered selector debugInfo, // Line number debugging rule, - ruleCSS; + importNodes = []; this.mergeRules(); @@ -200,24 +202,34 @@ tree.Ruleset.prototype = { env.tabLevel++; } - // Compile rules and rulesets - for (var i = 0; i < this.rules.length; i++) { - rule = this.rules[i]; + var tabRuleStr = env.compress ? '' : Array(env.tabLevel + 1).join(" "), + tabSetStr = env.compress ? '' : Array(env.tabLevel).join(" "); - if (rule.rules || (rule instanceof tree.Media) || rule instanceof tree.Directive) { - rulesets.push(rule.toCSS(env)); - } else if (rule instanceof tree.Comment) { - if (this.root) { - rulesets.push(rule.toCSS(env)); - } else { - rules.push(rule.toCSS(env)); - } + for (i = 0; i < this.rules.length; i++) { + rule = this.rules[i]; + if (rule instanceof tree.Import) { + importNodes.push(rule); + } else if (this.root || rule.rules || (rule instanceof tree.Media) || rule instanceof tree.Directive) { + rulesetNodes.push(rule); } else { - if (rule.toCSS) { - rules.push(rule.toCSS(env)); - } else if (rule.value) { - rules.push(rule.value.toString()); - } + ruleNodes.push(rule); + } + } + + rulesetNodes = importNodes.concat(rulesetNodes); + + for (i = 0; i < rulesetNodes.length; i++) { + rulesets.push(rulesetNodes[i].toCSS(env)); + } + + // Compile rules and rulesets + for (i = 0; i < ruleNodes.length; i++) { + rule = ruleNodes[i]; + + if (rule.toCSS) { + rules.push(rule.toCSS(env)); + } else if (rule.value) { + rules.push(rule.value.toString()); } } @@ -232,9 +244,6 @@ tree.Ruleset.prototype = { } } - var tabRuleStr = env.compress ? '' : Array(env.tabLevel + 1).join(" "), - tabSetStr = env.compress ? '' : Array(env.tabLevel).join(" "); - rulesets = rulesets.join('\n' + (this.root ? tabRuleStr : tabSetStr)); // If this is the root node, we don't render diff --git a/test/css/import-inline.css b/test/css/import-inline.css index f198d3c1..f28e19c6 100644 --- a/test/css/import-inline.css +++ b/test/css/import-inline.css @@ -1,5 +1,5 @@ -this isn't very valid CSS. @media (min-width: 600px) { #css { color: yellow; } } +this isn't very valid CSS. \ No newline at end of file