| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2017 eyeo GmbH | 3  * Copyright (C) 2006-2017 eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 41     // process anchor at expression start | 41     // process anchor at expression start | 
| 42     .replace(/^\\\|/, "^") | 42     .replace(/^\\\|/, "^") | 
| 43     // process anchor at expression end | 43     // process anchor at expression end | 
| 44     .replace(/\\\|$/, "$") | 44     .replace(/\\\|$/, "$") | 
| 45     // remove leading wildcards | 45     // remove leading wildcards | 
| 46     .replace(/^(\.\*)/, "") | 46     .replace(/^(\.\*)/, "") | 
| 47     // remove trailing wildcards | 47     // remove trailing wildcards | 
| 48     .replace(/(\.\*)$/, ""); | 48     .replace(/(\.\*)$/, ""); | 
| 49 } | 49 } | 
| 50 | 50 | 
| 51 if (typeof exports != "undefined") | 51 exports.filterToRegExp = filterToRegExp; | 
| 52   exports.filterToRegExp = filterToRegExp; | 52 | 
|  | 53 function splitSelector(selector) | 
|  | 54 { | 
|  | 55   if (selector.indexOf(",") == -1) | 
|  | 56     return [selector]; | 
|  | 57 | 
|  | 58   let selectors = []; | 
|  | 59   let start = 0; | 
|  | 60   let level = 0; | 
|  | 61   let sep = ""; | 
|  | 62 | 
|  | 63   for (let i = 0; i < selector.length; i++) | 
|  | 64   { | 
|  | 65     let chr = selector[i]; | 
|  | 66 | 
|  | 67     if (chr == "\\")        // ignore escaped characters | 
|  | 68       i++; | 
|  | 69     else if (chr == sep)    // don't split within quoted text | 
|  | 70       sep = "";             // e.g. [attr=","] | 
|  | 71     else if (sep == "") | 
|  | 72     { | 
|  | 73       if (chr == '"' || chr == "'") | 
|  | 74         sep = chr; | 
|  | 75       else if (chr == "(")  // don't split between parentheses | 
|  | 76         level++;            // e.g. :matches(div,span) | 
|  | 77       else if (chr == ")") | 
|  | 78         level = Math.max(0, level - 1); | 
|  | 79       else if (chr == "," && level == 0) | 
|  | 80       { | 
|  | 81         selectors.push(selector.substring(start, i)); | 
|  | 82         start = i + 1; | 
|  | 83       } | 
|  | 84     } | 
|  | 85   } | 
|  | 86 | 
|  | 87   selectors.push(selector.substring(start)); | 
|  | 88   return selectors; | 
|  | 89 } | 
|  | 90 | 
|  | 91 exports.splitSelector = splitSelector; | 
| OLD | NEW | 
|---|