diff --git a/deps/weex-styler/lib/validator.js b/deps/weex-styler/lib/validator.js index 52782e311be663e90697e7f0a2b70cf061e01bbb..850d7bc29432e213be8a70e59f5797dd6e4fb27a 100644 --- a/deps/weex-styler/lib/validator.js +++ b/deps/weex-styler/lib/validator.js @@ -194,6 +194,7 @@ var URL_REGEXP = /^url\(\s*['"]?\s*([^()]+?)\s*['"]?\s*\)$/ var NAME_REGEXP = /^[a-zA-Z_]+[a-zA-Z0-9-]*$/ var INT_REGEXP = /^[-+]?[0-9]+$/ var ID_REGEXP = /^\"@id\d+\"$/ +var AUTO_REGEXP = /^auto$/ var DATE_REGEXP = /(^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((1[02]|0?[13578])-([12][0-9]|3[01]|0?[1-9]))|((11|0?[469])-(30|[12][0-9]|0?[1-9]))|(0?2-(1[0-9]|2[0-8]|0?[1-9])))$)|(^(([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[13579][26])00))-(0?)2-29$)/ var TRANSFORM_REGEXP = /[0-9a-zA-Z]+\s*\(\s*[0-9(a-zA-Z-|%)\.]+\s*(,\s*[0-9(a-zA-Z-|%)\.]+)*\)/g var TRANSFORM_ITEM_REGEXP = /^([0-9a-zA-Z]+)\s*\((.*)\)$/ @@ -232,6 +233,29 @@ var PERCENTAGE_LENGTH_VALIDATOR = function PERCENTAGE_LENGTH_VALIDATOR(v) { } } +/** + * the values below is valid + * - 'auto' + * - number + * - number + 'px'|'%'|'vp'| 'fp' + * + * @param {string} v + * @return {function} a function to return + * - value: number|null + * - reason(k, v, result) + */ +var AUTO_PERCENTAGE_LENGTH_VALIDATOR = function AUTO_PERCENTAGE_LENGTH_VALIDATOR(v) { + v = (v || '').toString().trim() + if (v.match(AUTO_REGEXP)) { + return { value: v } + } + if (v.match(ID_REGEXP)) { + return { value: v } + } else { + return LENGTH(v, SUPPORT_CSS_PERCENTAGE_UNIT) + } +} + /** * the values below is valid * - number @@ -351,6 +375,12 @@ var SHORTHAND_PERCENTAGE_LENGTH_VALIDATOR = function SHORTHAND_PERCENTAGE_LENGTH return SHORTHAND_VALIDATOR(v, rule) } +var SHORTHAND_AUTO_PERCENTAGE_LENGTH_VALIDATOR = function SHORTHAND_AUTO_PERCENTAGE_LENGTH_VALIDATOR(v) { + v = (v || '').toString().trim() + let rule = AUTO_PERCENTAGE_LENGTH_VALIDATOR + return SHORTHAND_VALIDATOR(v, rule) +} + var SHORTHAND_LENGTH_VALIDATOR = function SHORTHAND_LENGTH_VALIDATOR(v) { v = (v || '').toString().trim() let rule = LENGTH_VALIDATOR @@ -2086,11 +2116,11 @@ var RICH_PROP_NAME_GROUPS = { paddingBottom: PERCENTAGE_LENGTH_VALIDATOR, paddingStart: PERCENTAGE_LENGTH_VALIDATOR, paddingEnd: PERCENTAGE_LENGTH_VALIDATOR, - margin: SHORTHAND_PERCENTAGE_LENGTH_VALIDATOR, - marginLeft: PERCENTAGE_LENGTH_VALIDATOR, - marginRight: PERCENTAGE_LENGTH_VALIDATOR, - marginTop: PERCENTAGE_LENGTH_VALIDATOR, - marginBottom: PERCENTAGE_LENGTH_VALIDATOR, + margin: SHORTHAND_AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginLeft: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginRight: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginTop: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginBottom: AUTO_PERCENTAGE_LENGTH_VALIDATOR, marginStart: PERCENTAGE_LENGTH_VALIDATOR, marginEnd: PERCENTAGE_LENGTH_VALIDATOR, placeholderColor: COLOR_VALIDATOR, @@ -2634,11 +2664,11 @@ var LITE_PROP_NAME_GROUPS = { paddingRight: LENGTH_VALIDATOR, paddingTop: LENGTH_VALIDATOR, paddingBottom: LENGTH_VALIDATOR, - margin:SHORTHAND_PERCENTAGE_LENGTH_VALIDATOR, - marginLeft: PERCENTAGE_LENGTH_VALIDATOR, - marginRight: PERCENTAGE_LENGTH_VALIDATOR, - marginTop: PERCENTAGE_LENGTH_VALIDATOR, - marginBottom: PERCENTAGE_LENGTH_VALIDATOR, + margin:SHORTHAND_AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginLeft: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginRight: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginTop: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginBottom: AUTO_PERCENTAGE_LENGTH_VALIDATOR, strokeWidth: LENGTH_VALIDATOR, }, border:{ @@ -2708,11 +2738,11 @@ var CARD_PROP_NAME_GROUPS = { paddingBottom: PERCENTAGE_LENGTH_VALIDATOR, paddingStart: PERCENTAGE_LENGTH_VALIDATOR, paddingEnd: PERCENTAGE_LENGTH_VALIDATOR, - margin: SHORTHAND_PERCENTAGE_LENGTH_VALIDATOR, - marginLeft: PERCENTAGE_LENGTH_VALIDATOR, - marginRight: PERCENTAGE_LENGTH_VALIDATOR, - marginTop: PERCENTAGE_LENGTH_VALIDATOR, - marginBottom: PERCENTAGE_LENGTH_VALIDATOR, + margin: SHORTHAND_AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginLeft: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginRight: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginTop: AUTO_PERCENTAGE_LENGTH_VALIDATOR, + marginBottom: AUTO_PERCENTAGE_LENGTH_VALIDATOR, marginStart: PERCENTAGE_LENGTH_VALIDATOR, marginEnd: PERCENTAGE_LENGTH_VALIDATOR, columns: NUMBER_VALIDATOR,