From 16f0ac27688d55208db0525e92cecf9e96c97c9e Mon Sep 17 00:00:00 2001 From: DShadrick Date: Fri, 23 Feb 2018 10:24:16 -0500 Subject: [PATCH] Allow escaped parentheses in pseudo selectors --- 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){