302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
|
# File 'lib/coradoc/query.rb', line 302
def query(document, selector)
return ResultSet.new if document.nil? || selector.to_s.strip.empty?
return query_multiple(document, selector.split(',').map(&:strip)) if selector.include?(',')
return query_with_combinators(document, selector) if selector.include?('>') || selector.include?(' ')
parsed = Selector.parse(selector)
results = []
traverse(document) do |element, siblings, index|
if parsed.matches?(element)
next if parsed.pseudo_classes.any? && !parsed.matches_pseudo_classes?(element, siblings: siblings,
index: index)
results << element
end
end
ResultSet.new(results)
end
|