mirror of
https://github.com/less/less.js.git
synced 2026-01-22 13:48:03 -05:00
refactor toCSS to be in output order
This commit is contained in:
@@ -152,10 +152,10 @@ tree.Ruleset.prototype = {
|
||||
},
|
||||
find: function (selector, self) {
|
||||
self = self || this;
|
||||
var rules = [], rule, match,
|
||||
var rules = [], match,
|
||||
key = selector.toCSS();
|
||||
|
||||
if (key in this._lookups) { return this._lookups[key] }
|
||||
if (key in this._lookups) { return this._lookups[key]; }
|
||||
|
||||
this.rulesets().forEach(function (rule) {
|
||||
if (rule !== self) {
|
||||
@@ -185,14 +185,14 @@ tree.Ruleset.prototype = {
|
||||
toCSS: function (env) {
|
||||
var i, css = [], // The CSS output
|
||||
rules = [], // node.Rule instances
|
||||
rulesets = [], // node.Ruleset instances
|
||||
ruleNodes = [],
|
||||
rulesetNodes = [],
|
||||
selector, // The fully rendered selector
|
||||
debugInfo, // Line number debugging
|
||||
rule;
|
||||
rule,
|
||||
firstRuleset = true;
|
||||
|
||||
this.mergeRules();
|
||||
this.mergeRules(); //todo move to toCSS Visitor
|
||||
|
||||
env.tabLevel = (env.tabLevel || 0);
|
||||
|
||||
@@ -212,6 +212,25 @@ tree.Ruleset.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
// If this is the root node, we don't render
|
||||
// a selector, or {}.
|
||||
if (!this.root) {
|
||||
debugInfo = tree.debugInfo(env, this, tabSetStr);
|
||||
selector = this.paths
|
||||
.map(function (p) {
|
||||
return p.map(function (s) {
|
||||
return s.toCSS(env);
|
||||
}).join('').trim();
|
||||
}).join(env.compress ? ',' : (',\n' + tabSetStr));
|
||||
|
||||
if (debugInfo) {
|
||||
css.push(debugInfo);
|
||||
css.push(tabSetStr);
|
||||
}
|
||||
|
||||
css.push(selector + (env.compress ? '{' : ' {\n') + tabRuleStr);
|
||||
}
|
||||
|
||||
// Compile rules and rulesets
|
||||
for (i = 0; i < ruleNodes.length; i++) {
|
||||
rule = ruleNodes[i];
|
||||
@@ -221,59 +240,34 @@ tree.Ruleset.prototype = {
|
||||
}
|
||||
|
||||
if (rule.toCSS) {
|
||||
rules.push(rule.toCSS(env));
|
||||
css.push(rule.toCSS(env));
|
||||
} else if (rule.value) {
|
||||
rules.push(rule.value.toString());
|
||||
css.push(rule.value.toString());
|
||||
}
|
||||
|
||||
env.lastRule = false;
|
||||
}
|
||||
|
||||
// If this is the root node, we don't render
|
||||
// a selector, or {}.
|
||||
// Otherwise, only output if this ruleset has rules.
|
||||
if (this.root) {
|
||||
css.push(rules.join(env.compress ? '' : ('\n' + tabRuleStr)));
|
||||
} else {
|
||||
debugInfo = tree.debugInfo(env, this, tabSetStr);
|
||||
selector = this.paths
|
||||
.map(function (p) {
|
||||
return p.map(function (s) {
|
||||
return s.toCSS(env);
|
||||
}).join('').trim();
|
||||
}).join(env.compress ? ',' : (',\n' + tabSetStr));
|
||||
|
||||
if (selector) {
|
||||
if (debugInfo) {
|
||||
css.push(debugInfo);
|
||||
css.push(tabSetStr);
|
||||
}
|
||||
|
||||
css.push(selector +
|
||||
(env.compress ? '{' : ' {\n') + tabRuleStr +
|
||||
rules.join(env.compress ? '' : ('\n' + tabRuleStr)) +
|
||||
(env.compress ? '}' : '\n' + tabSetStr + '}'));
|
||||
if (!env.lastRule) {
|
||||
css.push(env.compress ? '' : ('\n' + tabRuleStr));
|
||||
} else {
|
||||
env.lastRule = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.root) {
|
||||
css.push((env.compress ? '}' : '\n' + tabSetStr + '}'));
|
||||
env.tabLevel--;
|
||||
}
|
||||
|
||||
var firstRuleset = true;
|
||||
for (i = 0; i < rulesetNodes.length; i++) {
|
||||
if (rules.length && firstRuleset) {
|
||||
rulesets.push("\n" + (this.root ? tabRuleStr : tabSetStr));
|
||||
if (ruleNodes.length && firstRuleset) {
|
||||
css.push("\n" + (this.root ? tabRuleStr : tabSetStr));
|
||||
}
|
||||
if (!firstRuleset) {
|
||||
rulesets.push('\n' + (this.root ? tabRuleStr : tabSetStr));
|
||||
css.push('\n' + (this.root ? tabRuleStr : tabSetStr));
|
||||
}
|
||||
firstRuleset = false;
|
||||
rulesets.push(rulesetNodes[i].toCSS(env));
|
||||
css.push(rulesetNodes[i].toCSS(env));
|
||||
}
|
||||
|
||||
css = css.concat(rulesets);
|
||||
|
||||
return css.join('') + (!env.compress && this.firstRoot ? '\n' : '');
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user