| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | var override = require('../utils/override');var INTEGER_PATTERN = /^\d+$/;var ALL_UNITS = ['*', 'all'];var DEFAULT_PRECISION = 'off'; // all precision changes are disabledvar DIRECTIVES_SEPARATOR = ','; // e.g. *=5,px=3var DIRECTIVE_VALUE_SEPARATOR = '='; // e.g. *=5function roundingPrecisionFrom(source) {  return override(defaults(DEFAULT_PRECISION), buildPrecisionFrom(source));}function defaults(value) {  return {    'ch': value,    'cm': value,    'em': value,    'ex': value,    'in': value,    'mm': value,    'pc': value,    'pt': value,    'px': value,    'q': value,    'rem': value,    'vh': value,    'vmax': value,    'vmin': value,    'vw': value,    '%': value  };}function buildPrecisionFrom(source) {  if (source === null || source === undefined) {    return {};  }  if (typeof source == 'boolean') {    return {};  }  if (typeof source == 'number' && source == -1) {    return defaults(DEFAULT_PRECISION);  }  if (typeof source == 'number') {    return defaults(source);  }  if (typeof source == 'string' && INTEGER_PATTERN.test(source)) {    return defaults(parseInt(source));  }  if (typeof source == 'string' && source == DEFAULT_PRECISION) {    return defaults(DEFAULT_PRECISION);  }  if (typeof source == 'object') {    return source;  }  return source    .split(DIRECTIVES_SEPARATOR)    .reduce(function (accumulator, directive) {      var directiveParts = directive.split(DIRECTIVE_VALUE_SEPARATOR);      var name = directiveParts[0];      var value = parseInt(directiveParts[1]);      if (isNaN(value) || value == -1) {        value = DEFAULT_PRECISION;      }      if (ALL_UNITS.indexOf(name) > -1) {        accumulator = override(accumulator, defaults(value));      } else {        accumulator[name] = value;      }      return accumulator;    }, {});}module.exports = {  DEFAULT: DEFAULT_PRECISION,  roundingPrecisionFrom: roundingPrecisionFrom};
 |