From 26a09f08cf1ed43c640879f23fdad56c5c9282f7 Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期四, 09 六月 2022 15:02:38 +0800 Subject: [PATCH] TODO#139884 Banner 1 文案調整 --- PAMapp/node_modules/node-html-parser/node_modules/css-select/lib/attributes.js | 105 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 83 insertions(+), 22 deletions(-) diff --git a/PAMapp/node_modules/node-html-parser/node_modules/css-select/lib/attributes.js b/PAMapp/node_modules/node-html-parser/node_modules/css-select/lib/attributes.js index 8a78bde..bc524a0 100644 --- a/PAMapp/node_modules/node-html-parser/node_modules/css-select/lib/attributes.js +++ b/PAMapp/node_modules/node-html-parser/node_modules/css-select/lib/attributes.js @@ -13,14 +13,75 @@ return value.replace(reChars, "\\$&"); } /** + * Attributes that are case-insensitive in HTML. + * + * @private + * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors + */ +var caseInsensitiveAttributes = new Set([ + "accept", + "accept-charset", + "align", + "alink", + "axis", + "bgcolor", + "charset", + "checked", + "clear", + "codetype", + "color", + "compact", + "declare", + "defer", + "dir", + "direction", + "disabled", + "enctype", + "face", + "frame", + "hreflang", + "http-equiv", + "lang", + "language", + "link", + "media", + "method", + "multiple", + "nohref", + "noresize", + "noshade", + "nowrap", + "readonly", + "rel", + "rev", + "rules", + "scope", + "scrolling", + "selected", + "shape", + "target", + "text", + "type", + "valign", + "valuetype", + "vlink", +]); +function shouldIgnoreCase(selector, options) { + return typeof selector.ignoreCase === "boolean" + ? selector.ignoreCase + : selector.ignoreCase === "quirks" + ? !!options.quirksMode + : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); +} +/** * Attribute selectors */ exports.attributeRules = { - equals: function (next, data, _a) { - var adapter = _a.adapter; + equals: function (next, data, options) { + var adapter = options.adapter; var name = data.name; var value = data.value; - if (data.ignoreCase) { + if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return function (elem) { var attr = adapter.getAttributeValue(elem, name); @@ -34,12 +95,12 @@ return adapter.getAttributeValue(elem, name) === value && next(elem); }; }, - hyphen: function (next, data, _a) { - var adapter = _a.adapter; + hyphen: function (next, data, options) { + var adapter = options.adapter; var name = data.name; var value = data.value; var len = value.length; - if (data.ignoreCase) { + if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return function hyphenIC(elem) { var attr = adapter.getAttributeValue(elem, name); @@ -57,13 +118,13 @@ next(elem)); }; }, - element: function (next, _a, _b) { - var name = _a.name, value = _a.value, ignoreCase = _a.ignoreCase; - var adapter = _b.adapter; + element: function (next, data, options) { + var adapter = options.adapter; + var name = data.name, value = data.value; if (/\s/.test(value)) { return boolbase_1.falseFunc; } - var regex = new RegExp("(?:^|\\s)" + escapeRegex(value) + "(?:$|\\s)", ignoreCase ? "i" : ""); + var regex = new RegExp("(?:^|\\s)".concat(escapeRegex(value), "(?:$|\\s)"), shouldIgnoreCase(data, options) ? "i" : ""); return function element(elem) { var attr = adapter.getAttributeValue(elem, name); return (attr != null && @@ -77,15 +138,15 @@ var adapter = _b.adapter; return function (elem) { return adapter.hasAttrib(elem, name) && next(elem); }; }, - start: function (next, data, _a) { - var adapter = _a.adapter; + start: function (next, data, options) { + var adapter = options.adapter; var name = data.name; var value = data.value; var len = value.length; if (len === 0) { return boolbase_1.falseFunc; } - if (data.ignoreCase) { + if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return function (elem) { var attr = adapter.getAttributeValue(elem, name); @@ -101,15 +162,15 @@ next(elem); }; }, - end: function (next, data, _a) { - var adapter = _a.adapter; + end: function (next, data, options) { + var adapter = options.adapter; var name = data.name; var value = data.value; var len = -value.length; if (len === 0) { return boolbase_1.falseFunc; } - if (data.ignoreCase) { + if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return function (elem) { var _a; @@ -123,13 +184,13 @@ next(elem); }; }, - any: function (next, data, _a) { - var adapter = _a.adapter; + any: function (next, data, options) { + var adapter = options.adapter; var name = data.name, value = data.value; if (value === "") { return boolbase_1.falseFunc; } - if (data.ignoreCase) { + if (shouldIgnoreCase(data, options)) { var regex_1 = new RegExp(escapeRegex(value), "i"); return function anyIC(elem) { var attr = adapter.getAttributeValue(elem, name); @@ -145,8 +206,8 @@ next(elem); }; }, - not: function (next, data, _a) { - var adapter = _a.adapter; + not: function (next, data, options) { + var adapter = options.adapter; var name = data.name; var value = data.value; if (value === "") { @@ -154,7 +215,7 @@ return !!adapter.getAttributeValue(elem, name) && next(elem); }; } - else if (data.ignoreCase) { + else if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return function (elem) { var attr = adapter.getAttributeValue(elem, name); -- Gitblit v1.8.0