From c636f0d9267f21dfb7490441fe49bdcdb0a084ef Mon Sep 17 00:00:00 2001 From: Dan Shadrick Date: Fri, 23 Feb 2018 17:35:55 -0500 Subject: [PATCH] Allow escaped parentheses in pseudo selectors (#20) --- index.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 586fca13..428c2239 100644 --- a/index.js +++ b/index.js @@ -104,6 +104,13 @@ function parseSelector(subselects, selector, options){ selector = selector.substr(start); } + function isEscaped(pos) { + var slashCount = 0; + + while (selector.charAt(--pos) === "\\") slashCount++; + return (slashCount & 1) === 1; + } + stripWhitespace(0); while(selector !== ""){ @@ -211,8 +218,8 @@ function parseSelector(subselects, selector, options){ var pos = 1, counter = 1; for(; counter > 0 && pos < selector.length; pos++){ - if(selector.charAt(pos) === "(") counter++; - else if(selector.charAt(pos) === ")") counter--; + if(selector.charAt(pos) === "(" && !isEscaped(pos)) counter++; + else if(selector.charAt(pos) === ")" && !isEscaped(pos)) counter--; } if(counter){