mirror of
https://github.com/less/less.js.git
synced 2026-04-09 03:00:20 -04:00
move mergerules into toCSS visitor
This commit is contained in:
@@ -111,6 +111,7 @@
|
||||
}
|
||||
visitArgs.visitDeeper = false;
|
||||
|
||||
this._mergeRules(rulesetNode.rules);
|
||||
this._removeDuplicateRules(rulesetNode.rules);
|
||||
|
||||
// now decide whether we keep the ruleset
|
||||
@@ -153,6 +154,42 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_mergeRules: function (rules) {
|
||||
var groups = {},
|
||||
parts,
|
||||
rule,
|
||||
key;
|
||||
|
||||
for (var i = 0; i < rules.length; i++) {
|
||||
rule = rules[i];
|
||||
|
||||
if ((rule instanceof tree.Rule) && rule.merge) {
|
||||
key = [rule.name,
|
||||
rule.important ? "!" : ""].join(",");
|
||||
|
||||
if (!groups[key]) {
|
||||
parts = groups[key] = [];
|
||||
} else {
|
||||
rules.splice(i--, 1);
|
||||
}
|
||||
|
||||
parts.push(rule);
|
||||
}
|
||||
}
|
||||
|
||||
Object.keys(groups).map(function (k) {
|
||||
parts = groups[k];
|
||||
|
||||
if (parts.length > 1) {
|
||||
rule = parts[0];
|
||||
|
||||
rule.value = new (tree.Value)(parts.map(function (p) {
|
||||
return p.value;
|
||||
}));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -192,8 +192,6 @@ tree.Ruleset.prototype = {
|
||||
rule,
|
||||
firstRuleset = true;
|
||||
|
||||
this.mergeRules(); //todo move to toCSS Visitor
|
||||
|
||||
env.tabLevel = (env.tabLevel || 0);
|
||||
|
||||
if (!this.root) {
|
||||
@@ -447,42 +445,6 @@ tree.Ruleset.prototype = {
|
||||
sel.push(new(tree.Selector)(elements));
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mergeRules: function () {
|
||||
var groups = {},
|
||||
parts,
|
||||
rule,
|
||||
key;
|
||||
|
||||
for (var i = 0; i < this.rules.length; i++) {
|
||||
rule = this.rules[i];
|
||||
|
||||
if ((rule instanceof tree.Rule) && rule.merge) {
|
||||
key = [rule.name,
|
||||
rule.important ? "!" : ""].join(",");
|
||||
|
||||
if (!groups[key]) {
|
||||
parts = groups[key] = [];
|
||||
} else {
|
||||
this.rules.splice(i--, 1);
|
||||
}
|
||||
|
||||
parts.push(rule);
|
||||
}
|
||||
}
|
||||
|
||||
Object.keys(groups).map(function (k) {
|
||||
parts = groups[k];
|
||||
|
||||
if (parts.length > 1) {
|
||||
rule = parts[0];
|
||||
|
||||
rule.value = new (tree.Value)(parts.map(function (p) {
|
||||
return p.value;
|
||||
}));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
})(require('../tree'));
|
||||
|
||||
Reference in New Issue
Block a user