From 76a821fcf5e2ebec4a3238f1ab38c6a5fce9da64 Mon Sep 17 00:00:00 2001 From: Roman Dvornov Date: Mon, 21 Mar 2016 01:54:47 +0300 Subject: [PATCH] scopes in usage data should not affect classes --- lib/compressor/usage.js | 6 +----- test/usage.js | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/compressor/usage.js b/lib/compressor/usage.js index 62955147..b1313a38 100644 --- a/lib/compressor/usage.js +++ b/lib/compressor/usage.js @@ -15,7 +15,6 @@ function buildMap(list) { } function buildIndex(data) { - var classes = buildMap(data.classes); var scopes = false; if (data.scopes && Array.isArray(data.scopes)) { @@ -36,9 +35,6 @@ function buildIndex(data) { } scopes[name] = i + 1; - if (classes) { - classes[name] = true; - } } } } @@ -46,7 +42,7 @@ function buildIndex(data) { return { tags: buildMap(data.tags), ids: buildMap(data.ids), - classes: classes, + classes: buildMap(data.classes), scopes: scopes }; } diff --git a/test/usage.js b/test/usage.js index 14959184..f03542a0 100644 --- a/test/usage.js +++ b/test/usage.js @@ -33,6 +33,29 @@ describe('compress with usage', function() { assert.equal(compressed, '*{p:1}'); }); + describe('shouldn\'t affect classes whitelist', function() { + it('when "classes" is defined', function() { + var compressed = csso.minify('.a, .b { p: 1 }', { + usage: { + classes: ['a'], + scopes: [['a'], ['b']] + } + }); + + assert.equal(compressed, '.a{p:1}'); + }); + + it('when "classes" isn\'t defined', function() { + var compressed = csso.minify('.a, .b { p: 1 }', { + usage: { + scopes: [['a'], ['b']] + } + }); + + assert.equal(compressed, '.a,.b{p:1}'); + }); + }); + it('should throw exception when selector has classes from different scopes', function() { assert.throws(function() { csso.minify('.a.b { p: 1 }', {