123456789101112131415161718192021222324252627282930313233343536373839 |
- var OMIT_PLUSSIGN = /^(?:\+|(-))?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/;
- var KEEP_PLUSSIGN = /^([\+\-])?0*(\d*)(?:\.0*|(\.\d*?)0*)?$/;
- var unsafeToRemovePlusSignAfter = {
- Dimension: true,
- Hash: true,
- Identifier: true,
- Number: true,
- Raw: true,
- UnicodeRange: true
- };
- function packNumber(value, item) {
- // omit plus sign only if no prev or prev is safe type
- var regexp = item && item.prev !== null && unsafeToRemovePlusSignAfter.hasOwnProperty(item.prev.data.type)
- ? KEEP_PLUSSIGN
- : OMIT_PLUSSIGN;
- // 100 -> '100'
- // 00100 -> '100'
- // +100 -> '100' (only when safe, e.g. omitting plus sign for 1px+1px leads to single dimension instead of two)
- // -100 -> '-100'
- // 0.123 -> '.123'
- // 0.12300 -> '.123'
- // 0.0 -> ''
- // 0 -> ''
- // -0 -> '-'
- value = String(value).replace(regexp, '$1$2$3');
- if (value === '' || value === '-') {
- value = '0';
- }
- return value;
- }
- module.exports = function(node, item) {
- node.value = packNumber(node.value, item);
- };
- module.exports.pack = packNumber;
|