From 0c2ceac05530b8a47b68774fa85ee87dda1cf7c7 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Wed, 18 Jan 2017 17:46:03 +0100 Subject: [PATCH] Moves 'compacting' code to 'properties' folder-space. Why: * All those optimizations are dealing with properties so the new name better reflects its role; Also: * renames `overrideCompactor` to `overrideProperties`; * renames `compactorOptimize` to `optimizeProperties`. * cleans up property optimizing code calling from level 2 optimizations due to removal of aggressive merging, see #290. --- lib/optimizer/level-2/can-override.js | 2 +- lib/optimizer/level-2/compacting/optimize.js | 40 ------------------- lib/optimizer/level-2/merge-adjacent.js | 9 +---- .../level-2/merge-non-adjacent-by-selector.js | 9 +---- lib/optimizer/level-2/optimize.js | 9 +---- .../every-values-pair.js | 0 .../find-component-in.js | 0 .../{compacting => properties}/has-inherit.js | 0 .../is-component-of.js | 0 .../merge-into-shorthands.js} | 4 +- lib/optimizer/level-2/properties/optimize.js | 39 ++++++++++++++++++ .../override-properties.js} | 10 ++--- .../overrides-non-component-shorthand.js | 0 .../populate-components.js | 0 .../understandable.js | 0 .../vendor-prefixes.js | 0 lib/optimizer/level-2/reduce-non-adjacent.js | 15 +++---- test/binary-test.js | 2 +- test/optimizer/level-2/break-up-test.js | 2 +- test/optimizer/level-2/optimize-test.js | 2 +- .../find-component-in-test.js | 4 +- .../is-component-of-test.js | 4 +- .../longhand-overriding-test.js | 9 ++--- .../merge-into-shorthands-test.js} | 9 ++--- .../optimize-test.js | 13 +++--- .../override-properties-test.js} | 9 ++--- .../overrides-non-component-shorthand-test.js | 4 +- .../populate-components-test.js | 2 +- .../understandable-test.js | 2 +- .../level-2/reduce-non-adjacent-test.js | 2 +- .../optimizer/restore-from-optimizing-test.js | 2 +- test/source-map-test.js | 2 +- 32 files changed, 90 insertions(+), 115 deletions(-) delete mode 100644 lib/optimizer/level-2/compacting/optimize.js rename lib/optimizer/level-2/{compacting => properties}/every-values-pair.js (100%) rename lib/optimizer/level-2/{compacting => properties}/find-component-in.js (100%) rename lib/optimizer/level-2/{compacting => properties}/has-inherit.js (100%) rename lib/optimizer/level-2/{compacting => properties}/is-component-of.js (100%) rename lib/optimizer/level-2/{compacting/shorthand-compactor.js => properties/merge-into-shorthands.js} (97%) create mode 100644 lib/optimizer/level-2/properties/optimize.js rename lib/optimizer/level-2/{compacting/override-compactor.js => properties/override-properties.js} (96%) rename lib/optimizer/level-2/{compacting => properties}/overrides-non-component-shorthand.js (100%) rename lib/optimizer/level-2/{compacting => properties}/populate-components.js (100%) rename lib/optimizer/level-2/{compacting => properties}/understandable.js (100%) rename lib/optimizer/level-2/{compacting => properties}/vendor-prefixes.js (100%) rename test/optimizer/level-2/{compacting => properties}/find-component-in-test.js (97%) rename test/optimizer/level-2/{compacting => properties}/is-component-of-test.js (96%) rename test/optimizer/level-2/{compacting => properties}/longhand-overriding-test.js (96%) rename test/optimizer/level-2/{compacting/shorthand-compacting-test.js => properties/merge-into-shorthands-test.js} (99%) rename test/optimizer/level-2/{compacting => properties}/optimize-test.js (99%) rename test/optimizer/level-2/{compacting/override-compacting-test.js => properties/override-properties-test.js} (99%) rename test/optimizer/level-2/{compacting => properties}/overrides-non-component-shorthand-test.js (96%) rename test/optimizer/level-2/{compacting => properties}/populate-components-test.js (99%) rename test/optimizer/level-2/{compacting => properties}/understandable-test.js (98%) diff --git a/lib/optimizer/level-2/can-override.js b/lib/optimizer/level-2/can-override.js index 9cb4debea..2617234ca 100644 --- a/lib/optimizer/level-2/can-override.js +++ b/lib/optimizer/level-2/can-override.js @@ -1,4 +1,4 @@ -var understandable = require('./compacting/understandable'); +var understandable = require('./properties/understandable'); function backgroundPosition(validator, value1, value2) { if (!understandable(validator, value1, value2, 0, true) && !validator.isValidKeywordValue('background-position', value2, true)) { diff --git a/lib/optimizer/level-2/compacting/optimize.js b/lib/optimizer/level-2/compacting/optimize.js deleted file mode 100644 index 7257195b9..000000000 --- a/lib/optimizer/level-2/compacting/optimize.js +++ /dev/null @@ -1,40 +0,0 @@ -var populateComponents = require('./populate-components'); -var compactOverrides = require('./override-compactor'); -var compactShorthands = require('./shorthand-compactor'); - -var restoreWithComponents = require('../restore-with-components'); - -var wrapForOptimizing = require('../../wrap-for-optimizing').all; -var removeUnused = require('../../remove-unused'); -var restoreFromOptimizing = require('../../restore-from-optimizing'); - -var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel; - -function compactorOptimize(selector, properties, withCompacting, overrideOptions, context) { - var validator = context.validator; - var warnings = context.warnings; - var _properties = wrapForOptimizing(properties, false); - var _property; - - populateComponents(_properties, validator, warnings); - - for (var i = 0, l = _properties.length; i < l; i++) { - _property = _properties[i]; - if (_property.block) { - compactorOptimize(selector, _property.value[0][1], withCompacting, overrideOptions, context); - } - } - - if (overrideOptions.enabled && context.options.level[OptimizationLevel.Two].mergeIntoShorthands) { - compactOverrides(_properties, context.options.compatibility, overrideOptions.merging, validator); - } - - if (withCompacting && context.options.level[OptimizationLevel.Two].mergeIntoShorthands) { - compactShorthands(_properties, validator); - } - - restoreFromOptimizing(_properties, restoreWithComponents); - removeUnused(_properties); -} - -module.exports = compactorOptimize; diff --git a/lib/optimizer/level-2/merge-adjacent.js b/lib/optimizer/level-2/merge-adjacent.js index bc00fc267..a89a0ee3e 100644 --- a/lib/optimizer/level-2/merge-adjacent.js +++ b/lib/optimizer/level-2/merge-adjacent.js @@ -1,6 +1,6 @@ var isMergeable = require('./is-mergeable'); -var compactorOptimize = require('./compacting/optimize'); +var optimizeProperties = require('./properties/optimize'); var sortSelectors = require('../level-1/sort-selectors'); var tidyRules = require('../level-1/tidy-rules'); @@ -12,11 +12,6 @@ var serializeRules = require('../../writer/one-time').rules; var Token = require('../../tokenizer/token'); -var OVERRIDE_OPTIONS = { - enabled: true, - merging: true -}; - function mergeAdjacent(tokens, context) { var lastToken = [null, [], []]; var options = context.options; @@ -35,7 +30,7 @@ function mergeAdjacent(tokens, context) { if (lastToken[0] == Token.RULE && serializeRules(token[1]) == serializeRules(lastToken[1])) { Array.prototype.push.apply(lastToken[2], token[2]); - compactorOptimize(token[1], lastToken[2], true, OVERRIDE_OPTIONS, context); + optimizeProperties(lastToken[2], true, true, context); token[2] = []; } else if (lastToken[0] == Token.RULE && serializeBody(token[2]) == serializeBody(lastToken[2]) && isMergeable(serializeRules(token[1]), mergeablePseudoClasses, mergeablePseudoElements) && diff --git a/lib/optimizer/level-2/merge-non-adjacent-by-selector.js b/lib/optimizer/level-2/merge-non-adjacent-by-selector.js index 3a142addd..5e23064eb 100644 --- a/lib/optimizer/level-2/merge-non-adjacent-by-selector.js +++ b/lib/optimizer/level-2/merge-non-adjacent-by-selector.js @@ -1,17 +1,12 @@ var canReorder = require('./reorderable').canReorder; var extractProperties = require('./extract-properties'); -var compactorOptimize = require('./compacting/optimize'); +var optimizeProperties = require('./properties/optimize'); var serializeRules = require('../../writer/one-time').rules; var Token = require('../../tokenizer/token'); -var OVERRIDE_OPTIONS = { - enabled: true, - merging: true -}; - function mergeNonAdjacentBySelector(tokens, context) { var specificityCache = context.cache.specificity; var allSelectors = {}; @@ -73,7 +68,7 @@ function mergeNonAdjacentBySelector(tokens, context) { Array.prototype.push.apply(target[2], moved[2]); } - compactorOptimize(target[1], target[2], true, OVERRIDE_OPTIONS, context); + optimizeProperties(target[2], true, true, context); moved[2] = []; } } diff --git a/lib/optimizer/level-2/optimize.js b/lib/optimizer/level-2/optimize.js index 60e614792..790b6d96a 100644 --- a/lib/optimizer/level-2/optimize.js +++ b/lib/optimizer/level-2/optimize.js @@ -8,17 +8,12 @@ var removeDuplicateMediaQueries = require('./remove-duplicate-media-queries'); var removeDuplicates = require('./remove-duplicates'); var restructure = require('./restructure'); -var compactorOptimize = require('./compacting/optimize'); +var optimizeProperties = require('./properties/optimize'); var OptimizationLevel = require('../../options/optimization-level').OptimizationLevel; var Token = require('../../tokenizer/token'); -var OVERRIDE_OPTIONS = { - enabled: true, - merging: true -}; - function removeEmpty(tokens) { for (var i = 0, l = tokens.length; i < l; i++) { var token = tokens[i]; @@ -61,7 +56,7 @@ function recursivelyOptimizeProperties(tokens, context) { switch (token[0]) { case Token.RULE: - compactorOptimize(token[1], token[2], true, OVERRIDE_OPTIONS, context); + optimizeProperties(token[2], true, true, context); break; case Token.BLOCK: recursivelyOptimizeProperties(token[2], context); diff --git a/lib/optimizer/level-2/compacting/every-values-pair.js b/lib/optimizer/level-2/properties/every-values-pair.js similarity index 100% rename from lib/optimizer/level-2/compacting/every-values-pair.js rename to lib/optimizer/level-2/properties/every-values-pair.js diff --git a/lib/optimizer/level-2/compacting/find-component-in.js b/lib/optimizer/level-2/properties/find-component-in.js similarity index 100% rename from lib/optimizer/level-2/compacting/find-component-in.js rename to lib/optimizer/level-2/properties/find-component-in.js diff --git a/lib/optimizer/level-2/compacting/has-inherit.js b/lib/optimizer/level-2/properties/has-inherit.js similarity index 100% rename from lib/optimizer/level-2/compacting/has-inherit.js rename to lib/optimizer/level-2/properties/has-inherit.js diff --git a/lib/optimizer/level-2/compacting/is-component-of.js b/lib/optimizer/level-2/properties/is-component-of.js similarity index 100% rename from lib/optimizer/level-2/compacting/is-component-of.js rename to lib/optimizer/level-2/properties/is-component-of.js diff --git a/lib/optimizer/level-2/compacting/shorthand-compactor.js b/lib/optimizer/level-2/properties/merge-into-shorthands.js similarity index 97% rename from lib/optimizer/level-2/compacting/shorthand-compactor.js rename to lib/optimizer/level-2/properties/merge-into-shorthands.js index 96501fe7e..a75c4ed63 100644 --- a/lib/optimizer/level-2/compacting/shorthand-compactor.js +++ b/lib/optimizer/level-2/properties/merge-into-shorthands.js @@ -112,7 +112,7 @@ function invalidateOrCompact(properties, position, candidates, validator) { } } -function compactShortands(properties, validator) { +function mergeIntoShorthands(properties, validator) { var candidates = {}; var descriptor; var componentOf; @@ -154,4 +154,4 @@ function compactShortands(properties, validator) { invalidateOrCompact(properties, i, candidates, validator); } -module.exports = compactShortands; +module.exports = mergeIntoShorthands; diff --git a/lib/optimizer/level-2/properties/optimize.js b/lib/optimizer/level-2/properties/optimize.js new file mode 100644 index 000000000..4f790b2f1 --- /dev/null +++ b/lib/optimizer/level-2/properties/optimize.js @@ -0,0 +1,39 @@ +var mergeIntoShorthands = require('./merge-into-shorthands'); +var overrideProperties = require('./override-properties'); +var populateComponents = require('./populate-components'); + +var restoreWithComponents = require('../restore-with-components'); + +var wrapForOptimizing = require('../../wrap-for-optimizing').all; +var removeUnused = require('../../remove-unused'); +var restoreFromOptimizing = require('../../restore-from-optimizing'); + +var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel; + +function optimizeProperties(properties, withOverriding, withMerging, context) { + var _properties = wrapForOptimizing(properties, false); + var _property; + var i, l; + + populateComponents(_properties, context.validator, context.warnings); + + for (i = 0, l = _properties.length; i < l; i++) { + _property = _properties[i]; + if (_property.block) { + optimizeProperties(_property.value[0][1], withOverriding, withMerging, context); + } + } + + if (withOverriding && context.options.level[OptimizationLevel.Two].mergeIntoShorthands) { + overrideProperties(_properties, withMerging, context.options.compatibility, context.validator); + } + + if (withMerging && context.options.level[OptimizationLevel.Two].mergeIntoShorthands) { + mergeIntoShorthands(_properties, context.validator); + } + + restoreFromOptimizing(_properties, restoreWithComponents); + removeUnused(_properties); +} + +module.exports = optimizeProperties; diff --git a/lib/optimizer/level-2/compacting/override-compactor.js b/lib/optimizer/level-2/properties/override-properties.js similarity index 96% rename from lib/optimizer/level-2/compacting/override-compactor.js rename to lib/optimizer/level-2/properties/override-properties.js index e77284ace..429cc8a8f 100644 --- a/lib/optimizer/level-2/compacting/override-compactor.js +++ b/lib/optimizer/level-2/properties/override-properties.js @@ -215,7 +215,7 @@ function intoLayers(values) { return layers; } -function compactOverrides(properties, compatibility, merging, validator) { +function overrideProperties(properties, withMerging, compatibility, validator) { var mayOverride, right, left, component; var overriddenComponents; var overriddenComponent; @@ -305,7 +305,7 @@ function compactOverrides(properties, compatibility, merging, validator) { } left.unused = true; - } else if (merging && left.shorthand && !right.shorthand && isComponentOf(left, right, true)) { + } else if (withMerging && left.shorthand && !right.shorthand && isComponentOf(left, right, true)) { // maybe `right` can be pulled into `left` which is a shorthand? if (right.important && !left.important) continue; @@ -348,7 +348,7 @@ function compactOverrides(properties, compatibility, merging, validator) { override(component, right); left.dirty = true; } - } else if (merging && left.shorthand && right.shorthand && left.name == right.name) { + } else if (withMerging && left.shorthand && right.shorthand && left.name == right.name) { // merge if all components can be merged if (!left.multiplex && right.multiplex) @@ -375,7 +375,7 @@ function compactOverrides(properties, compatibility, merging, validator) { overrideShorthand(left, right); left.dirty = true; - } else if (merging && left.shorthand && right.shorthand && isComponentOf(left, right)) { + } else if (withMerging && left.shorthand && right.shorthand && isComponentOf(left, right)) { // border is a shorthand but any of its components is a shorthand too if (!left.important && right.important) @@ -435,4 +435,4 @@ function compactOverrides(properties, compatibility, merging, validator) { } } -module.exports = compactOverrides; +module.exports = overrideProperties; diff --git a/lib/optimizer/level-2/compacting/overrides-non-component-shorthand.js b/lib/optimizer/level-2/properties/overrides-non-component-shorthand.js similarity index 100% rename from lib/optimizer/level-2/compacting/overrides-non-component-shorthand.js rename to lib/optimizer/level-2/properties/overrides-non-component-shorthand.js diff --git a/lib/optimizer/level-2/compacting/populate-components.js b/lib/optimizer/level-2/properties/populate-components.js similarity index 100% rename from lib/optimizer/level-2/compacting/populate-components.js rename to lib/optimizer/level-2/properties/populate-components.js diff --git a/lib/optimizer/level-2/compacting/understandable.js b/lib/optimizer/level-2/properties/understandable.js similarity index 100% rename from lib/optimizer/level-2/compacting/understandable.js rename to lib/optimizer/level-2/properties/understandable.js diff --git a/lib/optimizer/level-2/compacting/vendor-prefixes.js b/lib/optimizer/level-2/properties/vendor-prefixes.js similarity index 100% rename from lib/optimizer/level-2/compacting/vendor-prefixes.js rename to lib/optimizer/level-2/properties/vendor-prefixes.js diff --git a/lib/optimizer/level-2/reduce-non-adjacent.js b/lib/optimizer/level-2/reduce-non-adjacent.js index b85f0a3be..3461bb268 100644 --- a/lib/optimizer/level-2/reduce-non-adjacent.js +++ b/lib/optimizer/level-2/reduce-non-adjacent.js @@ -1,6 +1,6 @@ var isMergeable = require('./is-mergeable'); -var compactorOptimize = require('./compacting/optimize'); +var optimizeProperties = require('./properties/optimize'); var cloneArray = require('../../utils/clone-array'); @@ -9,11 +9,6 @@ var Token = require('../../tokenizer/token'); var serializeBody = require('../../writer/one-time').body; var serializeRules = require('../../writer/one-time').rules; -var OVERRIDE_OPTIONS = { - enabled: true, - merging: false -}; - function reduceNonAdjacent(tokens, context) { var options = context.options; var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses; @@ -83,7 +78,7 @@ function reduceSimpleNonAdjacentCases(tokens, repeated, candidates, options, con var selector = repeated[i]; var data = candidates[selector]; - reduceSelector(tokens, selector, data, { + reduceSelector(tokens, data, { filterOut: filterOut, callback: reduceBody }, options, context); @@ -130,7 +125,7 @@ function reduceComplexNonAdjacentCases(tokens, candidates, options, context) { localContext.data = data; - reduceSelector(tokens, selector, data, { + reduceSelector(tokens, data, { filterOut: filterOut, callback: collectReducedBodies }, options, context); @@ -143,7 +138,7 @@ function reduceComplexNonAdjacentCases(tokens, candidates, options, context) { } } -function reduceSelector(tokens, selector, data, context, options, outerContext) { +function reduceSelector(tokens, data, context, options, outerContext) { var bodies = []; var bodiesAsList = []; var processedTokens = []; @@ -161,7 +156,7 @@ function reduceSelector(tokens, selector, data, context, options, outerContext) processedTokens.push(where); } - compactorOptimize(selector, bodies, false, OVERRIDE_OPTIONS, outerContext); + optimizeProperties(bodies, true, false, outerContext); var processedCount = processedTokens.length; var propertyIdx = bodies.length - 1; diff --git a/test/binary-test.js b/test/binary-test.js index 51a7176b0..90b05d993 100644 --- a/test/binary-test.js +++ b/test/binary-test.js @@ -467,7 +467,7 @@ vows.describe('./bin/cleancss') }) }) .addBatch({ - 'shorthand compacting': { + 'shorthand merging': { 'of (yet) unmergeable properties': pipedContext('a{background:url(image.png);background-color:red}', '-O2 mergeIntoShorthands:off', { 'gets right result': function (error, stdout) { assert.equal(stdout, 'a{background:url(image.png);background-color:red}'); diff --git a/test/optimizer/level-2/break-up-test.js b/test/optimizer/level-2/break-up-test.js index 2e4ba1c92..53a65be18 100644 --- a/test/optimizer/level-2/break-up-test.js +++ b/test/optimizer/level-2/break-up-test.js @@ -2,7 +2,7 @@ var assert = require('assert'); var vows = require('vows'); var wrapForOptimizing = require('../../../lib/optimizer/wrap-for-optimizing').all; -var populateComponents = require('../../../lib/optimizer/level-2/compacting/populate-components'); +var populateComponents = require('../../../lib/optimizer/level-2/properties/populate-components'); var validator = require('../../../lib/optimizer/validator'); var compatibility = require('../../../lib/utils/compatibility'); diff --git a/test/optimizer/level-2/optimize-test.js b/test/optimizer/level-2/optimize-test.js index 3af8b3894..592d4ad0b 100644 --- a/test/optimizer/level-2/optimize-test.js +++ b/test/optimizer/level-2/optimize-test.js @@ -71,7 +71,7 @@ vows.describe('level 2 optimizer') }, { level: 2 }) ) .addBatch( - optimizerContext('unit compacting', { + optimizerContext('unit merging', { 'font-size': [ 'div{font-size:1rem;font-size:16px}', 'div{font-size:16px}' diff --git a/test/optimizer/level-2/compacting/find-component-in-test.js b/test/optimizer/level-2/properties/find-component-in-test.js similarity index 97% rename from test/optimizer/level-2/compacting/find-component-in-test.js rename to test/optimizer/level-2/properties/find-component-in-test.js index ad5a2fcff..c35a7f097 100644 --- a/test/optimizer/level-2/compacting/find-component-in-test.js +++ b/test/optimizer/level-2/properties/find-component-in-test.js @@ -3,10 +3,10 @@ var vows = require('vows'); var wrapForOptimizing = require('../../../../lib/optimizer/wrap-for-optimizing').all; var compatibility = require('../../../../lib/utils/compatibility'); -var populateComponents = require('../../../../lib/optimizer/level-2/compacting/populate-components'); +var populateComponents = require('../../../../lib/optimizer/level-2/properties/populate-components'); var validator = require('../../../../lib/optimizer/validator'); -var findComponentIn = require('../../../../lib/optimizer/level-2/compacting/find-component-in'); +var findComponentIn = require('../../../../lib/optimizer/level-2/properties/find-component-in'); vows.describe(findComponentIn) .addBatch({ diff --git a/test/optimizer/level-2/compacting/is-component-of-test.js b/test/optimizer/level-2/properties/is-component-of-test.js similarity index 96% rename from test/optimizer/level-2/compacting/is-component-of-test.js rename to test/optimizer/level-2/properties/is-component-of-test.js index 5914ec1c4..c5bfb5b8c 100644 --- a/test/optimizer/level-2/compacting/is-component-of-test.js +++ b/test/optimizer/level-2/properties/is-component-of-test.js @@ -3,10 +3,10 @@ var vows = require('vows'); var wrapForOptimizing = require('../../../../lib/optimizer/wrap-for-optimizing').all; var compatibility = require('../../../../lib/utils/compatibility'); -var populateComponents = require('../../../../lib/optimizer/level-2/compacting/populate-components'); +var populateComponents = require('../../../../lib/optimizer/level-2/properties/populate-components'); var validator = require('../../../../lib/optimizer/validator'); -var isComponentOf = require('../../../../lib/optimizer/level-2/compacting/is-component-of'); +var isComponentOf = require('../../../../lib/optimizer/level-2/properties/is-component-of'); vows.describe(isComponentOf) .addBatch({ diff --git a/test/optimizer/level-2/compacting/longhand-overriding-test.js b/test/optimizer/level-2/properties/longhand-overriding-test.js similarity index 96% rename from test/optimizer/level-2/compacting/longhand-overriding-test.js rename to test/optimizer/level-2/properties/longhand-overriding-test.js index 8c9b96e0e..7e696e510 100644 --- a/test/optimizer/level-2/compacting/longhand-overriding-test.js +++ b/test/optimizer/level-2/properties/longhand-overriding-test.js @@ -1,7 +1,7 @@ var assert = require('assert'); var vows = require('vows'); -var optimize = require('../../../../lib/optimizer/level-2/compacting/optimize'); +var optimizeProperties = require('../../../../lib/optimizer/level-2/properties/optimize'); var tokenize = require('../../../../lib/tokenizer/tokenize'); var inputSourceMapTracker = require('../../../../lib/reader/input-source-map-tracker'); @@ -27,11 +27,10 @@ function _optimize(source) { } } }; - optimize( - tokens[0][1], + optimizeProperties( tokens[0][2], true, - { enabled: true, merging: true }, + true, { options: options, validator: validator(compat) } ); @@ -103,7 +102,7 @@ function overrideContext(longhands) { return context; } -vows.describe(optimize) +vows.describe(optimizeProperties) .addBatch( overrideContext({ 'background-attachment': ['background'], diff --git a/test/optimizer/level-2/compacting/shorthand-compacting-test.js b/test/optimizer/level-2/properties/merge-into-shorthands-test.js similarity index 99% rename from test/optimizer/level-2/compacting/shorthand-compacting-test.js rename to test/optimizer/level-2/properties/merge-into-shorthands-test.js index a3163b92f..2d7954fba 100644 --- a/test/optimizer/level-2/compacting/shorthand-compacting-test.js +++ b/test/optimizer/level-2/properties/merge-into-shorthands-test.js @@ -1,7 +1,7 @@ var assert = require('assert'); var vows = require('vows'); -var optimize = require('../../../../lib/optimizer/level-2/compacting/optimize'); +var optimizeProperties = require('../../../../lib/optimizer/level-2/properties/optimize'); var tokenize = require('../../../../lib/tokenizer/tokenize'); var inputSourceMapTracker = require('../../../../lib/reader/input-source-map-tracker'); @@ -24,18 +24,17 @@ function _optimize(source) { } } }; - optimize( - tokens[0][1], + optimizeProperties( tokens[0][2], true, - { enabled: true, merging: true }, + true, { options: options, validator: validator(compat) } ); return tokens[0][2]; } -vows.describe(optimize) +vows.describe(optimizeProperties) .addBatch({ 'shorthand background #1': { 'topic': function () { diff --git a/test/optimizer/level-2/compacting/optimize-test.js b/test/optimizer/level-2/properties/optimize-test.js similarity index 99% rename from test/optimizer/level-2/compacting/optimize-test.js rename to test/optimizer/level-2/properties/optimize-test.js index c9bf3d769..8dca079be 100644 --- a/test/optimizer/level-2/compacting/optimize-test.js +++ b/test/optimizer/level-2/properties/optimize-test.js @@ -1,7 +1,7 @@ var assert = require('assert'); var vows = require('vows'); -var optimize = require('../../../../lib/optimizer/level-2/compacting/optimize'); +var optimizeProperties = require('../../../../lib/optimizer/level-2/properties/optimize'); var tokenize = require('../../../../lib/tokenizer/tokenize'); var inputSourceMapTracker = require('../../../../lib/reader/input-source-map-tracker'); @@ -14,10 +14,10 @@ function _optimize(source, compatibilityOptions) { compatibility: compat, level: { 2: { + mergeIntoShorthands: true, mergeMedia: false, - restructureRules: false, mergeSemantically: false, - mergeIntoShorthands: true + restructureRules: false } } }; @@ -27,18 +27,17 @@ function _optimize(source, compatibilityOptions) { warnings: [] }); - optimize( - tokens[0][1], + optimizeProperties( tokens[0][2], true, - { enabled: true, merging: true }, + true, { options: options, validator: validator(compat) } ); return tokens[0][2]; } -vows.describe(optimize) +vows.describe(optimizeProperties) .addBatch({ 'of two properties': { 'topic': function () { diff --git a/test/optimizer/level-2/compacting/override-compacting-test.js b/test/optimizer/level-2/properties/override-properties-test.js similarity index 99% rename from test/optimizer/level-2/compacting/override-compacting-test.js rename to test/optimizer/level-2/properties/override-properties-test.js index f41a374cf..f06c54206 100644 --- a/test/optimizer/level-2/compacting/override-compacting-test.js +++ b/test/optimizer/level-2/properties/override-properties-test.js @@ -1,7 +1,7 @@ var assert = require('assert'); var vows = require('vows'); -var optimize = require('../../../../lib/optimizer/level-2/compacting/optimize'); +var optimizeProperties = require('../../../../lib/optimizer/level-2/properties/optimize'); var tokenize = require('../../../../lib/tokenizer/tokenize'); var inputSourceMapTracker = require('../../../../lib/reader/input-source-map-tracker'); @@ -24,18 +24,17 @@ function _optimize(source, compat) { } } }; - optimize( - tokens[0][1], + optimizeProperties( tokens[0][2], true, - { enabled: true, merging: true }, + true, { options: options, validator: validator(compat) } ); return tokens[0][2]; } -vows.describe(optimize) +vows.describe(optimizeProperties) .addBatch({ 'longhand then longhand - background colors as functions': { 'topic': function () { diff --git a/test/optimizer/level-2/compacting/overrides-non-component-shorthand-test.js b/test/optimizer/level-2/properties/overrides-non-component-shorthand-test.js similarity index 96% rename from test/optimizer/level-2/compacting/overrides-non-component-shorthand-test.js rename to test/optimizer/level-2/properties/overrides-non-component-shorthand-test.js index 53997f1f0..181b3869d 100644 --- a/test/optimizer/level-2/compacting/overrides-non-component-shorthand-test.js +++ b/test/optimizer/level-2/properties/overrides-non-component-shorthand-test.js @@ -3,10 +3,10 @@ var vows = require('vows'); var wrapForOptimizing = require('../../../../lib/optimizer/wrap-for-optimizing').all; var compatibility = require('../../../../lib/utils/compatibility'); -var populateComponents = require('../../../../lib/optimizer/level-2/compacting/populate-components'); +var populateComponents = require('../../../../lib/optimizer/level-2/properties/populate-components'); var validator = require('../../../../lib/optimizer/validator'); -var overridesNonComponentShorthand = require('../../../../lib/optimizer/level-2/compacting/overrides-non-component-shorthand'); +var overridesNonComponentShorthand = require('../../../../lib/optimizer/level-2/properties/overrides-non-component-shorthand'); vows.describe(overridesNonComponentShorthand) .addBatch({ diff --git a/test/optimizer/level-2/compacting/populate-components-test.js b/test/optimizer/level-2/properties/populate-components-test.js similarity index 99% rename from test/optimizer/level-2/compacting/populate-components-test.js rename to test/optimizer/level-2/properties/populate-components-test.js index ec0f139ce..e950126d5 100644 --- a/test/optimizer/level-2/compacting/populate-components-test.js +++ b/test/optimizer/level-2/properties/populate-components-test.js @@ -5,7 +5,7 @@ var wrapForOptimizing = require('../../../../lib/optimizer/wrap-for-optimizing') var compatibility = require('../../../../lib/utils/compatibility'); var validator = require('../../../../lib/optimizer/validator'); -var populateComponents = require('../../../../lib/optimizer/level-2/compacting/populate-components'); +var populateComponents = require('../../../../lib/optimizer/level-2/properties/populate-components'); vows.describe(populateComponents) .addBatch({ diff --git a/test/optimizer/level-2/compacting/understandable-test.js b/test/optimizer/level-2/properties/understandable-test.js similarity index 98% rename from test/optimizer/level-2/compacting/understandable-test.js rename to test/optimizer/level-2/properties/understandable-test.js index 48c734d18..0ebe9a1f1 100644 --- a/test/optimizer/level-2/compacting/understandable-test.js +++ b/test/optimizer/level-2/properties/understandable-test.js @@ -4,7 +4,7 @@ var vows = require('vows'); var compatibility = require('../../../../lib/utils/compatibility'); var validator = require('../../../../lib/optimizer/validator'); -var understandable = require('../../../../lib/optimizer/level-2/compacting/understandable'); +var understandable = require('../../../../lib/optimizer/level-2/properties/understandable'); vows.describe(understandable) .addBatch({ diff --git a/test/optimizer/level-2/reduce-non-adjacent-test.js b/test/optimizer/level-2/reduce-non-adjacent-test.js index bb564fc15..ecaeeadea 100644 --- a/test/optimizer/level-2/reduce-non-adjacent-test.js +++ b/test/optimizer/level-2/reduce-non-adjacent-test.js @@ -127,7 +127,7 @@ vows.describe('remove duplicates') }, { level: { 2: { restructureRules: true } } }) ) .addBatch( - optimizerContext('level 2 off but reduceNonAdjacentRules and compacting on', { + optimizerContext('level 2 off but reduceNonAdjacentRules and merging on', { 'non-adjacent with multi selectors': [ 'a{padding:10px;margin:0;color:red}.one{color:red}a,p{color:red;padding:0}', 'a{margin:0}.one{color:red}a,p{color:red;padding:0}' diff --git a/test/optimizer/restore-from-optimizing-test.js b/test/optimizer/restore-from-optimizing-test.js index 97d18142a..a7fccc41a 100644 --- a/test/optimizer/restore-from-optimizing-test.js +++ b/test/optimizer/restore-from-optimizing-test.js @@ -7,7 +7,7 @@ var wrapForOptimizing = require('../../lib/optimizer/wrap-for-optimizing').all; var shallowClone = require('../../lib/optimizer/level-2/clone').shallow; var restoreWithComponents = require('../../lib/optimizer/level-2/restore-with-components'); -var populateComponents = require('../../lib/optimizer/level-2/compacting/populate-components'); +var populateComponents = require('../../lib/optimizer/level-2/properties/populate-components'); var validator = require('../../lib/optimizer/validator'); var compatibility = require('../../lib/utils/compatibility'); diff --git a/test/source-map-test.js b/test/source-map-test.js index f28f89640..0e15578bf 100644 --- a/test/source-map-test.js +++ b/test/source-map-test.js @@ -1976,7 +1976,7 @@ vows.describe('source-map') assert.deepEqual(minified.sourceMap._mappings._array[4], mapping); } }, - 'compacting': { + 'shorthand merging': { 'topic': function () { return new CleanCSS({ level: 2, sourceMap: true }).minify('a{margin-top:10px;\nmargin-bottom:4px;\nmargin-left:5px;\nmargin-right:5px}'); },