From: Jakub Pawlowicz Date: Sun, 22 Feb 2015 11:36:38 +0000 (+0000) Subject: Speeds up restructuring. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=791d97ba87645daee5ce18601b7e014543685f39;p=clean-css.git Speeds up restructuring. We don't need to do a full selector cleanup, just remove repetitions and remap. --- diff --git a/lib/selectors/optimizers/advanced.js b/lib/selectors/optimizers/advanced.js index c0f74179..8fe33c33 100644 --- a/lib/selectors/optimizers/advanced.js +++ b/lib/selectors/optimizers/advanced.js @@ -398,7 +398,6 @@ AdvancedOptimizer.prototype.mergeNonAdjacentByBody = function (tokens) { AdvancedOptimizer.prototype.restructure = function (tokens) { var movableTokens = {}; var movedProperties = []; - var adjacentSpace = this.options.compatibility.selectors.adjacentSpace; var self = this; function tokensToMerge(sourceTokens) { @@ -438,7 +437,7 @@ AdvancedOptimizer.prototype.restructure = function (tokens) { beforeSize += selectorLength; } - allSelectors = CleanUp.selectors(allSelectors, false, adjacentSpace); + allSelectors = CleanUp.selectorDuplicates(allSelectors); afterSize += allSelectors.list.join(',').length + valueSize; if (afterSize < beforeSize) diff --git a/lib/selectors/optimizers/clean-up.js b/lib/selectors/optimizers/clean-up.js index 5c2555e2..878f4b97 100644 --- a/lib/selectors/optimizers/clean-up.js +++ b/lib/selectors/optimizers/clean-up.js @@ -47,6 +47,25 @@ var CleanUp = { }; }, + selectorDuplicates: function (selectors) { + var plain = []; + var tokenized = []; + + for (var i = 0, l = selectors.length; i < l; i++) { + var selector = selectors[i]; + + if (plain.indexOf(selector.value) == -1) { + plain.push(selector.value); + tokenized.push(selector); + } + } + + return { + list: plain.sort(), + tokenized: tokenized.sort(selectorSorter) + }; + }, + block: function (block) { return block .replace(/\s+/g, ' ')