Module: Coradoc::Query
- Defined in:
- lib/coradoc/query.rb
Overview
Document querying and introspection API.
This module provides CSS-like selectors for navigating and querying document trees. It enables powerful document manipulation patterns.
Defined Under Namespace
Classes: Engine, ResultSet, Selector
Class Method Summary collapse
-
.get_children(element) ⇒ Array
Get navigable children from an element.
-
.query(document, selector) ⇒ ResultSet
Query a document with a selector.
-
.query_within(element, selector) ⇒ ResultSet
Query within an element (not including the element itself).
Class Method Details
.get_children(element) ⇒ Array
Get navigable children from an element. Uses ChildrenContent#children when available, falls back to content.
579 580 581 582 583 584 585 586 587 588 589 590 |
# File 'lib/coradoc/query.rb', line 579 def get_children(element) return [] unless element children = if element.respond_to?(:children) && element.children&.any? element.children elsif element.respond_to?(:content) && element.content Array(element.content).select { |c| c.is_a?(CoreModel::Base) } else [] end Array(children) end |
.query(document, selector) ⇒ ResultSet
Query a document with a selector
549 550 551 |
# File 'lib/coradoc/query.rb', line 549 def query(document, selector) Engine.query(document, selector) end |
.query_within(element, selector) ⇒ ResultSet
Query within an element (not including the element itself)
558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 |
# File 'lib/coradoc/query.rb', line 558 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 |