Class: StimulusReflex::HTML::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/stimulus_reflex/html/document.rb

Direct Known Subclasses

DocumentFragment

Defined Under Namespace

Classes: Match

Constant Summary collapse

DEFAULT_HTML_WITHOUT_FORMAT =
Nokogiri::XML::Node::SaveOptions::DEFAULT_HTML & ~Nokogiri::XML::Node::SaveOptions::FORMAT

Instance Method Summary collapse

Constructor Details

#initialize(html) ⇒ Document

Returns a new instance of Document.



23
24
25
26
27
28
# File 'lib/stimulus_reflex/html/document.rb', line 23

def initialize(html)
  @document = parsing_class.parse(html.to_s)
  @matches = {
    "body" => Match.new(@document.at_css("body"))
  }
end

Instance Method Details

#document_elementObject



10
11
12
# File 'lib/stimulus_reflex/html/document.rb', line 10

def document_element
  @document&.root
end

#empty?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/stimulus_reflex/html/document.rb', line 30

def empty?
  @document.content.empty?
end

#inner_htmlObject



19
20
21
# File 'lib/stimulus_reflex/html/document.rb', line 19

def inner_html
  document_element ? document_element.inner_html(save_with: DEFAULT_HTML_WITHOUT_FORMAT) : ""
end

#match(selector) ⇒ Object



38
39
40
# File 'lib/stimulus_reflex/html/document.rb', line 38

def match(selector)
  @matches[selector] ||= Match.new(@document.at_css(selector))
end

#outer_htmlObject Also known as: to_html



14
15
16
# File 'lib/stimulus_reflex/html/document.rb', line 14

def outer_html
  document_element ? document_element.to_html(save_with: DEFAULT_HTML_WITHOUT_FORMAT) : ""
end

#parsing_classObject



34
35
36
# File 'lib/stimulus_reflex/html/document.rb', line 34

def parsing_class
  Nokogiri::HTML5::Document
end