Class: Coradoc::Query::Engine
- Inherits:
-
Object
- Object
- Coradoc::Query::Engine
- Defined in:
- lib/coradoc/query.rb
Overview
Query engine for executing selectors
Class Method Summary collapse
-
.query(document, selector) ⇒ ResultSet
Query a document or element.
Instance Method Summary collapse
-
#query(document, selector) ⇒ ResultSet
Query document with selector.
Class Method Details
.query(document, selector) ⇒ ResultSet
Query a document or element
418 419 420 |
# File 'lib/coradoc/query.rb', line 418 def self.query(document, selector) new.query(document, selector) end |
Instance Method Details
#query(document, selector) ⇒ ResultSet
Query document with selector
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 |
# File 'lib/coradoc/query.rb', line 427 def query(document, selector) return ResultSet.new if document.nil? || selector.to_s.strip.empty? # Handle comma-separated selectors return query_multiple(document, selector.split(',').map(&:strip)) if selector.include?(',') # Handle descendant combinator (space) and child combinator (>) return query_with_combinators(document, selector) if selector.include?('>') || selector.include?(' ') # Simple single selector 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 |