You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
49 lines
1.3 KiB
var split = require('../../../utils/split'); |
|
|
|
var ANY_FUNCTION_PATTERN = /^(\-(?:moz|ms|o|webkit)\-[a-z\-]+|[a-z\-]+)\((.+)\)$/; |
|
var SKIP_FUNCTION_PATTERN = /^(?:\-moz\-calc|\-webkit\-calc|calc|rgb|hsl|rgba|hsla|min|max|clamp|expression)\(/; |
|
var TOKEN_SEPARATOR_PATTERN = /([\s,\/])/; |
|
|
|
function removeRecursively(value, options) { |
|
var functionTokens; |
|
var tokens; |
|
|
|
if (SKIP_FUNCTION_PATTERN.test(value)) { |
|
return value; |
|
} |
|
|
|
functionTokens = ANY_FUNCTION_PATTERN.exec(value); |
|
|
|
if (!functionTokens) { |
|
return removeZeros(value, options); |
|
} |
|
|
|
tokens = split(functionTokens[2], TOKEN_SEPARATOR_PATTERN) |
|
.map(function (token) { return removeRecursively(token, options); }); |
|
|
|
return functionTokens[1] + '(' + tokens.join('') + ')'; |
|
} |
|
|
|
function removeZeros(value, options) { |
|
return value |
|
.replace(options.unitsRegexp, '$1' + '0' + '$2') |
|
.replace(options.unitsRegexp, '$1' + '0' + '$2'); |
|
} |
|
|
|
var plugin = { |
|
level1: { |
|
value: function zero(name, value, options) { |
|
if (!options.compatibility.properties.zeroUnits) { |
|
return value; |
|
} |
|
|
|
if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) { |
|
return value; |
|
} |
|
|
|
return removeRecursively(value, options); |
|
} |
|
} |
|
}; |
|
|
|
module.exports = plugin;
|
|
|