| Index: lib/filterClasses.js |
| =================================================================== |
| --- a/lib/filterClasses.js |
| +++ b/lib/filterClasses.js |
| @@ -183,18 +183,18 @@ |
| // Don't remove spaces inside comments |
| if (/^ *!/.test(text)) |
| return text.trim(); |
| // Special treatment for element hiding filters, right side is allowed to |
| // contain spaces |
| if (Filter.elemhideRegExp.test(text)) |
| { |
| - let [, domain, separator, selector] = /^(.*?)(#[@?]?#?)(.*)$/.exec(text); |
| - return domain.replace(/ +/g, "") + separator + selector.trim(); |
| + let [, domains, separator, selector] = /^(.*?)(#[@?]?#?)(.*)$/.exec(text); |
| + return domains.replace(/ +/g, "") + separator + selector.trim(); |
| } |
| // For most regexp filters we strip all spaces, but $csp filter options |
| // are allowed to contain single (non trailing) spaces. |
| let strippedText = text.replace(/ +/g, ""); |
| if (!strippedText.includes("$") || !/\bcsp=/i.test(strippedText)) |
| return strippedText; |
| @@ -960,18 +960,18 @@ |
| * @augments ActiveFilter |
| */ |
| function ElemHideBase(text, domains, selector) |
| { |
| ActiveFilter.call(this, text, domains || null); |
| if (domains) |
| { |
| - this.selectorDomain = domains.replace(/,~[^,]+/g, "") |
| - .replace(/^~[^,]+,?/, "").toLowerCase(); |
| + this.selectorDomains = domains.replace(/,~[^,]+/g, "") |
| + .replace(/^~[^,]+,?/, "").toLowerCase(); |
| } |
| // Braces are being escaped to prevent CSS rule injection. |
| this.selector = selector.replace("{", "\\7B ").replace("}", "\\7D "); |
| } |
| exports.ElemHideBase = ElemHideBase; |
| ElemHideBase.prototype = extend(ActiveFilter, { |
| @@ -981,62 +981,62 @@ |
| domainSeparator: ",", |
| /** |
| * @see ActiveFilter.ignoreTrailingDot |
| */ |
| ignoreTrailingDot: false, |
| /** |
| - * Host name or domain the filter should be restricted to (can be null for |
| + * Host names or domains the filter should be restricted to (can be null for |
| * no restriction) |
| * @type {string} |
| */ |
| - selectorDomain: null, |
| + selectorDomains: null, |
| /** |
| * CSS selector for the HTML elements that should be hidden |
| * @type {string} |
| */ |
| selector: null |
| }); |
| /** |
| * Creates an element hiding filter from a pre-parsed text representation |
| * |
| * @param {string} text same as in Filter() |
| - * @param {string?} domain |
| - * domain part of the text representation |
| + * @param {string?} domains |
| + * domains part of the text representation |
| * @param {string?} type |
| * rule type, either empty or @ (exception) or ? (emulation rule) |
| * @param {string} selector raw CSS selector |
| * @return {ElemHideFilter|ElemHideException| |
| * ElemHideEmulationFilter|InvalidFilter} |
| */ |
| -ElemHideBase.fromText = function(text, domain, type, selector) |
| +ElemHideBase.fromText = function(text, domains, type, selector) |
| { |
| // We don't allow ElemHide filters which have any empty domains. |
| // Note: The ElemHide.prototype.domainSeparator is duplicated here, if that |
| // changes this must be changed too. |
| - if (domain && /(^|,)~?(,|$)/.test(domain)) |
| + if (domains && /(^|,)~?(,|$)/.test(domains)) |
| return new InvalidFilter(text, "filter_invalid_domain"); |
| if (type == "@") |
| - return new ElemHideException(text, domain, selector); |
| + return new ElemHideException(text, domains, selector); |
| if (type == "?") |
| { |
| // Element hiding emulation filters are inefficient so we need to make sure |
| // that they're only applied if they specify active domains |
| - if (!/,[^~][^,.]*\.[^,]/.test("," + domain)) |
| + if (!/,[^~][^,.]*\.[^,]/.test("," + domains)) |
| return new InvalidFilter(text, "filter_elemhideemulation_nodomain"); |
| - return new ElemHideEmulationFilter(text, domain, selector); |
| + return new ElemHideEmulationFilter(text, domains, selector); |
| } |
| - return new ElemHideFilter(text, domain, selector); |
| + return new ElemHideFilter(text, domains, selector); |
| }; |
| /** |
| * Class for element hiding filters |
| * @param {string} text see Filter() |
| * @param {string} domains see ElemHideBase() |
| * @param {string} selector see ElemHideBase() |
| * @constructor |