From 02bcfb9047278d90469c003e81520075549bbcba Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Thu, 23 Oct 2014 08:01:22 +0100 Subject: [PATCH] Adds a more performant version of rebuilder. --- lib/selectors/optimizer.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/selectors/optimizer.js b/lib/selectors/optimizer.js index 129c3a43..a65b3bc2 100644 --- a/lib/selectors/optimizer.js +++ b/lib/selectors/optimizer.js @@ -9,7 +9,14 @@ function SelectorsOptimizer(options, context) { this.context = context || {}; } -function valueMapper (object) { return object.value; } +function valueRebuilder(list, separator) { + var merged = ''; + + for (var i = 0, l = list.length; i < l; i++) + merged += list[i].value + (i < l - 1 ? separator : ''); + + return merged; +} function rebuild(tokens, keepBreaks, isFlatBlock) { var joinCharacter = isFlatBlock ? ';' : (keepBreaks ? lineBreak : ''); @@ -31,13 +38,13 @@ function rebuild(tokens, keepBreaks, isFlatBlock) { if (token.kind == 'block') { body = token.isFlatBlock ? - token.body.map(valueMapper).join(';') : + valueRebuilder(token.body, ';') : rebuild(token.body, keepBreaks, token.isFlatBlock); if (body.length > 0) parts.push(token.value + '{' + body + '}'); } else { - selector = token.value.map(valueMapper).join(','); - body = token.body.map(valueMapper).join(';'); + selector = valueRebuilder(token.value, ','); + body = valueRebuilder(token.body, ';'); parts.push(selector + '{' + body + '}'); } } -- 2.34.1