06a33897 by Adam Heath

Fix complex matching, don't always add the node to left, and fix ' '.

1 parent f277360d
...@@ -171,16 +171,9 @@ const compileMatcher = (ast: AST, selector: string): MatcherProducer => { ...@@ -171,16 +171,9 @@ const compileMatcher = (ast: AST, selector: string): MatcherProducer => {
171 leftMatches.add(node) 171 leftMatches.add(node)
172 } 172 }
173 if (!rightMatcher(context, node, parent, i, debug)) return false 173 if (!rightMatcher(context, node, parent, i, debug)) return false
174 leftMatches.add(node)
175 if (debug) console.log('matched on right', { left, right, combinator, pos, node, parent }) 174 if (debug) console.log('matched on right', { left, right, combinator, pos, node, parent })
176 switch (combinator) { 175 switch (combinator) {
177 case ' ': 176 case ' ':
178 let parentPtr = parent
179 while (parentPtr) {
180 if (leftMatches.has(parentPtr)) return true
181 parentPtr = parentPtr.parent
182 }
183 return false
184 case '>': 177 case '>':
185 if (debug) console.log('leftMatches parent', leftMatches.has(parent)) 178 if (debug) console.log('leftMatches parent', leftMatches.has(parent))
186 return parent ? leftMatches.has(parent) : false 179 return parent ? leftMatches.has(parent) : false
......