From 7cee74216e3bec736bbdce4d6de1b4733f2fbc2f Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Tue, 24 Jan 2017 15:43:33 +0100 Subject: [PATCH] Fixes #867 - skips optimizing variable values. Why: * It may not be the best idea as we don't know what a value represents and where it'll end up. --- History.md | 1 + lib/optimizer/level-1/optimize.js | 5 +++++ test/optimizer/level-1/optimize-test.js | 12 ++++++++++++ 3 files changed, 18 insertions(+) diff --git a/History.md b/History.md index e301ef50..39f73e99 100644 --- a/History.md +++ b/History.md @@ -2,6 +2,7 @@ ================== * Fixed issue [#866](https://github.com/jakubpawlowicz/clean-css/issues/866) - edge case in `inline` option. +* Fixed issue [#867](https://github.com/jakubpawlowicz/clean-css/issues/867) - skip optimizing variable values. [4.0.0 / 2017-01-23](https://github.com/jakubpawlowicz/clean-css/compare/v3.4.24...v4.0.0) ================== diff --git a/lib/optimizer/level-1/optimize.js b/lib/optimizer/level-1/optimize.js index 01dce3f0..ced1d6d8 100644 --- a/lib/optimizer/level-1/optimize.js +++ b/lib/optimizer/level-1/optimize.js @@ -38,6 +38,7 @@ var IMPORT_PREFIX_PATTERN = /^@import/i; var QUOTED_PATTERN = /^('.*'|".*")$/; var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/; var URL_PREFIX_PATTERN = /^url\(/i; +var VARIABLE_NAME_PATTERN = /^--\S+$/; function isNegative(value) { return value && value[1][0] == '-' && parseFloat(value[1]) < 0; @@ -468,6 +469,10 @@ function optimizeBody(properties, context) { continue; } + if (VARIABLE_NAME_PATTERN.test(name)) { + continue; + } + for (var j = 0, m = property.value.length; j < m; j++) { type = property.value[j][0]; value = property.value[j][1]; diff --git a/test/optimizer/level-1/optimize-test.js b/test/optimizer/level-1/optimize-test.js index 399ea1dc..d37d34e1 100644 --- a/test/optimizer/level-1/optimize-test.js +++ b/test/optimizer/level-1/optimize-test.js @@ -1075,6 +1075,18 @@ vows.describe('level 1 optimizations') ] }, { level: 1 }) ) + .addBatch( + optimizerContext('quotes', { + 'font-family': [ + '.block{font-family:"Arial"}', + '.block{font-family:Arial}' + ], + 'variable': [ + '.block{--font-family:"Arial"}', + '.block{--font-family:"Arial"}' + ] + }, { level: 1 }) + ) .addBatch( optimizerContext('@charset cleanup off', { 'stays where it is': [ -- 2.34.1