diff options
Diffstat (limited to 'node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js')
| -rw-r--r-- | node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js b/node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js new file mode 100644 index 00000000..df2cda59 --- /dev/null +++ b/node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js @@ -0,0 +1,46 @@ +var WHOLE_PIXEL_VALUE = /(?:^|\s|\()(-?\d+)px/; + +var plugin = { + level1: { + value: function unit(_name, value, options) { + if (!WHOLE_PIXEL_VALUE.test(value)) { + return value; + } + + return value.replace(WHOLE_PIXEL_VALUE, function(match, val) { + var newValue; + var intVal = parseInt(val); + + if (intVal === 0) { + return match; + } + + if (options.compatibility.properties.shorterLengthUnits + && options.compatibility.units.pt + && intVal * 3 % 4 === 0) { + newValue = intVal * 3 / 4 + 'pt'; + } + + if (options.compatibility.properties.shorterLengthUnits + && options.compatibility.units.pc + && intVal % 16 === 0) { + newValue = intVal / 16 + 'pc'; + } + + if (options.compatibility.properties.shorterLengthUnits + && options.compatibility.units.in + && intVal % 96 === 0) { + newValue = intVal / 96 + 'in'; + } + + if (newValue) { + newValue = match.substring(0, match.indexOf(val)) + newValue; + } + + return newValue && newValue.length < match.length ? newValue : match; + }); + } + } +}; + +module.exports = plugin; |
