From 791d97ba87645daee5ce18601b7e014543685f39 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Sun, 22 Feb 2015 11:36:38 +0000 Subject: [PATCH] Speeds up restructuring. We don't need to do a full selector cleanup, just remove repetitions and remap. --- lib/selectors/optimizers/advanced.js | 3 +-- lib/selectors/optimizers/clean-up.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) 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, ' ') -- 2.34.1