* Fixed issue [#890](https://github.com/jakubpawlowicz/clean-css/issues/890) - adds toggle to disable empty tokens removal.
* Fixed issue [#886](https://github.com/jakubpawlowicz/clean-css/issues/886) - better multi pseudo class / element merging.
+[4.0.9 / 2017-xx-xx](https://github.com/jakubpawlowicz/clean-css/compare/v4.0.8...4.0)
+==================
+
+* Fixed issue [#910](https://github.com/jakubpawlowicz/clean-css/issues/910) - too aggressive precision optimizations.
+
[4.0.8 / 2017-02-22](https://github.com/jakubpawlowicz/clean-css/compare/v4.0.7...v4.0.8)
==================
}
function optimizePrecision(_, value, precisionOptions) {
- var optimizedValue = value.replace(/(\d)\.($|\D)/g, '$1$2');
-
- if (!precisionOptions.matcher || value.indexOf('.') === -1) {
- return optimizedValue;
+ if (!precisionOptions.enabled || value.indexOf('.') === -1) {
+ return value;
}
- return optimizedValue
- .replace(precisionOptions.matcher, function (match, integerPart, fractionPart, unit) {
+ return value
+ .replace(precisionOptions.decimalPointMatcher, '$1$2$3')
+ .replace(precisionOptions.zeroMatcher, function (match, integerPart, fractionPart, unit) {
var multiplier = precisionOptions.units[unit].multiplier;
var parsedInteger = parseInt(integerPart);
var integer = isNaN(parsedInteger) ? 0 : parsedInteger;
}
if (optimizable.length > 0) {
- precisionOptions.matcher = new RegExp('(\\d*)(\\.\\d+)(' + optimizable.join('|') + ')', 'g');
+ precisionOptions.enabled = true;
+ precisionOptions.decimalPointMatcher = new RegExp('(\\d)\\.($|' + optimizable.join('|') + ')($|\W)', 'g');
+ precisionOptions.zeroMatcher = new RegExp('(\\d*)(\\.\\d+)(' + optimizable.join('|') + ')', 'g');
}
return precisionOptions;
'ems': [
'a{left:1.1231em}',
'a{left:1.123em}'
+ ],
+ 'inside strings': [
+ '.block{background-image:image-set(url("//s1.server.com/img.png") 1x)}',
+ '.block{background-image:image-set(url("//s1.server.com/img.png") 1x)}'
]
}, { level: { 1: { roundingPrecision: 3 } } })
)
'ems': [
'a{left:1.1231em}',
'a{left:1.1231em}'
+ ],
+ 'inside strings': [
+ '.block{background-image:image-set(url("//s1.server.com/img.png") 1x)}',
+ '.block{background-image:image-set(url("//s1.server.com/img.png") 1x)}'
]
}, { level: { 1: { roundingPrecision: 'off' } } })
)
],
'missing': [
'a{opacity:1.}',
- 'a{opacity:1}'
+ 'a{opacity:1.}'
],
'multiple': [
'a{margin:-0 -0 -0 -0}',