diff --git a/deps/weex-styler/index.js b/deps/weex-styler/index.js index 080b3b988f7ed82420fb450838a6caeb18b5f2f4..4078b27972a1310f8a225ee162f12a703ac718fe 100644 --- a/deps/weex-styler/index.js +++ b/deps/weex-styler/index.js @@ -12,6 +12,7 @@ var IMPORT_MATCHER = /(['"]([^()]+?)['"])|(['"]([^()]+?)['"]\s+(only|not)?\s?(sc var LENGTH_REGEXP = /^[-+]?\d*\.?\d+(\S*)$/ const CARD_SELECTOR = /^[\.#][A-Za-z0-9_\-]+$/ const card = process.env.DEVICE_LEVEL === 'card' +var ALL_SELECTOR_MATCHER = /^\*$/ /** * expand margin、padding、border、borderWidth、borderColor、borderStyle properties、animation @@ -254,7 +255,7 @@ function parse(code, done, resourcePath) { } else { rule.selectors.forEach(function (selector) { const flag = card ? selector.match(CARD_SELECTOR) : - selector.match(SELECTOR_MATCHER) || selector.match(DESCENDANT_SELECTOR_MATCHER) + selector.match(SELECTOR_MATCHER) || selector.match(DESCENDANT_SELECTOR_MATCHER) || selector.match(ALL_SELECTOR_MATCHER) if (flag) { var className = selector diff --git a/deps/weex-styler/lib/validator.js b/deps/weex-styler/lib/validator.js index 52782e311be663e90697e7f0a2b70cf061e01bbb..3fcdf9fac8738be8fccf72bcd8f53f50bcd2b591 100644 --- a/deps/weex-styler/lib/validator.js +++ b/deps/weex-styler/lib/validator.js @@ -207,6 +207,7 @@ var SUPPORT_CSS_GRID_UNIT = ['px', '%', 'fr', 'vp', 'fp'] var SUPPORT_CSS_TEXT_INDENT_UNIT = ['px', 'cm', '%', 'em', 'vp', 'fp'] var SUPPORT_CSS_ANGLE_UNIT = ["deg", "rad", "grad", "turn"] var logTypes = ["NOTE", "WARNING", "ERROR"] +var NORMAL_REGEXP = /^normal$/ var ANYTHING_VALIDATOR = function ANYTHING_VALIDATOR(v) { v = (v || '').toString().trim() @@ -232,6 +233,30 @@ var PERCENTAGE_LENGTH_VALIDATOR = function PERCENTAGE_LENGTH_VALIDATOR(v) { } } +/** + * the values below is valid + * - 'normal' + * - number + * - number + 'px' | '%' | 'vp' | 'fp' + * + * @param {string} v + * @return {function} a function to return + * - value: number|null + * - reason(k, v, result) + */ +var NORMAL_PERCENTAGE_LENGTH_VALIDATOR = function NORMAL_PERCENTAGE_LENGTH_VALIDATOR(v) { + v = (v || '').toString().trim() + if (v.match(NORMAL_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 @@ -2238,7 +2263,10 @@ var RICH_PROP_NAME_GROUPS = { textAlign: genEnumValidator(['start', 'end', 'left', 'center', 'right']), textOverflow: genEnumValidator(['clip', 'ellipsis']), textIndent: TEXT_INDENT_VALIDATOR, - lineHeight: LENGTH_VALIDATOR, + lineHeight: NORMAL_PERCENTAGE_LENGTH_VALIDATOR, + wordSpacing: NORMAL_PERCENTAGE_LENGTH_VALIDATOR, + textDecorationColor: COLOR_VALIDATOR, + whiteSpace: genEnumValidator(['normal', 'nowrap', 'pre', 'pre-wrap', 'pre-line']), letterSpacing: LENGTH_VALIDATOR, minLines: NUMBER_VALIDATOR, maxLines: ANYTHING_VALIDATOR, @@ -2818,7 +2846,10 @@ var CARD_PROP_NAME_GROUPS = { textAlign: genEnumValidator(['start', 'end', 'left', 'center', 'right']), textOverflow: genEnumValidator(['clip', 'ellipsis']), textIndent: TEXT_INDENT_VALIDATOR, - lineHeight: LENGTH_VALIDATOR, + lineHeight: NORMAL_PERCENTAGE_LENGTH_VALIDATOR, + wordSpacing: NORMAL_PERCENTAGE_LENGTH_VALIDATOR, + textDecorationColor: COLOR_VALIDATOR, + whiteSpace: genEnumValidator(['normal', 'nowrap', 'pre', 'pre-wrap', 'pre-line']), maxLines: ANYTHING_VALIDATOR, minFontSize: LENGTH_VALIDATOR, maxFontSize: LENGTH_VALIDATOR,