From a7a4d7f85196b0bf96baaaf636b04bd37bf28def Mon Sep 17 00:00:00 2001 From: wupengFEX Date: Wed, 10 Jan 2018 17:43:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=84=9A=E6=9C=AC=E6=AD=A3?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rules.json | 2 +- src/matcher.js | 1 - src/validators/mandatory_attr_or_missing.js | 10 +++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/rules.json b/rules.json index bb8e74e..e8a7c02 100644 --- a/rules.json +++ b/rules.json @@ -184,7 +184,7 @@ "srcset": "/^\\S+$/" }], "attrs": { - "href": { + "src": { "value": "/^\\S+$/" }, "srcset": { diff --git a/src/matcher.js b/src/matcher.js index eb03d0b..ceb7e13 100644 --- a/src/matcher.js +++ b/src/matcher.js @@ -25,7 +25,6 @@ function stringToRegex(str) { */ function matchValue(src, target) { var re - if (!target || !src) return false if ((re = stringToRegex(target))) { var result = re.test(src) return re.negate ? (!result) : result diff --git a/src/validators/mandatory_attr_or_missing.js b/src/validators/mandatory_attr_or_missing.js index f74d1d9..8b854f4 100644 --- a/src/validators/mandatory_attr_or_missing.js +++ b/src/validators/mandatory_attr_or_missing.js @@ -25,10 +25,18 @@ exports.onBegin = function(error, html, rules) { exports.onNode = function(node, rule, error) { if (!rule.attrs_or) return + var attrOccurrence = _.keyBy(node.attrs, 'name') var matched = false _.map(rule.attrs_or, pattern => { - if (!matcher.matchAttrs(node, pattern)) return + var isExisted = true + _.forOwn(pattern, (rules, attrName) => { + if (!attrOccurrence[attrName]) { + isExisted = false + return + } + }) + if (!isExisted || !matcher.matchAttrs(node, pattern)) return matched = true }) if (!matched) {