Module: Coradoc::Query
- Defined in:
- lib/coradoc/query.rb
Overview
Document querying and introspection API.
Provides CSS-like selectors for navigating and querying document trees.
Defined Under Namespace
Classes: Engine, ResultSet, Selector
Class Method Summary collapse
- .get_children(element) ⇒ Object
- .query(document, selector) ⇒ Object
- .query_within(element, selector) ⇒ Object
Class Method Details
.get_children(element) ⇒ Object
432 433 434 435 436 437 438 439 440 441 442 |
# File 'lib/coradoc/query.rb', line 432 def get_children(element) return [] unless element if element.is_a?(CoreModel::StructuralElement) && element.children&.any? element.children elsif element.is_a?(CoreModel::Block) && element.content Array(element.content).select { |c| c.is_a?(CoreModel::Base) } else [] end end |
.query(document, selector) ⇒ Object
412 413 414 |
# File 'lib/coradoc/query.rb', line 412 def query(document, selector) Engine.query(document, selector) end |
.query_within(element, selector) ⇒ Object
416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 |
# File 'lib/coradoc/query.rb', line 416 def query_within(element, selector) parsed = Selector.parse(selector) results = [] traverse_children(element) do |child, siblings, index| if parsed.matches?(child) next if parsed.pseudo_classes.any? && !parsed.matches_pseudo_classes?(child, siblings: siblings, index: index) results << child end end ResultSet.new(results) end |