4686c066 by Adam Heath

In complex, rename 'seen' to leftMatches.

1 parent 4acd3583
Showing 1 changed file with 13 additions and 13 deletions
...@@ -152,39 +152,39 @@ const compileMatcher = (ast: AST, selector: string): MatcherProducer => { ...@@ -152,39 +152,39 @@ const compileMatcher = (ast: AST, selector: string): MatcherProducer => {
152 case 'complex': { 152 case 'complex': {
153 const { left, right, combinator, pos } = ast 153 const { left, right, combinator, pos } = ast
154 const leftMatcher = makeMatcher(left) 154 const leftMatcher = makeMatcher(left)
155 const leftCounter = counter++
156 neededContext[ leftCounter ] = () => new WeakSet()
155 const rightMatcher = makeMatcher(right) 157 const rightMatcher = makeMatcher(right)
156 const setCounter = counter++
157 neededContext[ setCounter ] = () => new WeakSet()
158 return (context, node, parent, i, debug) => { 158 return (context, node, parent, i, debug) => {
159 const seen = context[ setCounter ] 159 const { [ leftCounter ]: leftMatches } = context
160 if (leftMatcher(context, node, parent, i, debug)) { 160 if (leftMatcher(context, node, parent, i, debug)) {
161 if (debug) console.log('matched on left', { left, right, combinator, pos, parent }) 161 if (debug) console.log('matched on left', { left, right, combinator, pos, parent })
162 // TODO: Check seen.has(), and maybe skip calling leftMatcher? 162 // TODO: Check leftMatches.has(), and maybe skip calling leftMatcher?
163 seen.add(node) 163 leftMatches.add(node)
164 } else if (parent && seen.has(parent) && combinator === ' ') { 164 } else if (parent && leftMatches.has(parent) && combinator === ' ') {
165 seen.add(node) 165 leftMatches.add(node)
166 } 166 }
167 if (!rightMatcher(context, node, parent, i, debug)) return false 167 if (!rightMatcher(context, node, parent, i, debug)) return false
168 seen.add(node) 168 leftMatches.add(node)
169 if (debug) console.log('matched on right', { left, right, combinator, pos, node, parent }) 169 if (debug) console.log('matched on right', { left, right, combinator, pos, node, parent })
170 switch (combinator) { 170 switch (combinator) {
171 case ' ': 171 case ' ':
172 let parentPtr = parent 172 let parentPtr = parent
173 while (parentPtr) { 173 while (parentPtr) {
174 if (seen.has(parentPtr)) return true 174 if (leftMatches.has(parentPtr)) return true
175 parentPtr = parentPtr.parent 175 parentPtr = parentPtr.parent
176 } 176 }
177 return false 177 return false
178 case '>': 178 case '>':
179 if (debug) console.log('seen parent', seen.has(parent)) 179 if (debug) console.log('leftMatches parent', leftMatches.has(parent))
180 return parent ? seen.has(parent) : false 180 return parent ? leftMatches.has(parent) : false
181 case '+': { 181 case '+': {
182 if (!parent) return false 182 if (!parent) return false
183 let prevSiblings = parent.children.slice(0, i).filter((el) => el.type === ELEMENT_NODE) 183 let prevSiblings = parent.children.slice(0, i).filter((el) => el.type === ELEMENT_NODE)
184 if (prevSiblings.length === 0) return false 184 if (prevSiblings.length === 0) return false
185 const prev = prevSiblings[prevSiblings.length - 1] 185 const prev = prevSiblings[prevSiblings.length - 1]
186 if (!prev) return false 186 if (!prev) return false
187 if (seen.has(prev)) return true 187 if (leftMatches.has(prev)) return true
188 return false 188 return false
189 } 189 }
190 case '~': { 190 case '~': {
...@@ -192,7 +192,7 @@ const compileMatcher = (ast: AST, selector: string): MatcherProducer => { ...@@ -192,7 +192,7 @@ const compileMatcher = (ast: AST, selector: string): MatcherProducer => {
192 let prevSiblings = parent.children.slice(0, i).filter((el) => el.type === ELEMENT_NODE) 192 let prevSiblings = parent.children.slice(0, i).filter((el) => el.type === ELEMENT_NODE)
193 if (prevSiblings.length === 0) return false 193 if (prevSiblings.length === 0) return false
194 for (const prev of prevSiblings) { 194 for (const prev of prevSiblings) {
195 if (seen.has(prev)) return true 195 if (leftMatches.has(prev)) return true
196 } 196 }
197 return false 197 return false
198 } 198 }
......