class Slacken::DomContainer
Public: a DOM tree container parsed by Nokogiri.
Public Class Methods
new(root)
click to toggle source
# File lib/slacken/dom_container.rb, line 6 def initialize(root) @root = root end
Public Instance Methods
to_component()
click to toggle source
Public: Create a DocumentComponent
of the root node.
Returns a DocumentComponent
or nil.
# File lib/slacken/dom_container.rb, line 13 def to_component build_document_component(@root) end
Private Instance Methods
attrs_of(node)
click to toggle source
# File lib/slacken/dom_container.rb, line 43 def attrs_of(node) case node.name.to_sym when :text { content: node.content } when :iframe, :a { href: node['href'] } when :input { type: node['type'], checked: node['checked'] } when :img { src: node['src'], alt: node['alt'], class: (node['class'] || '').split } else {} end end
build_document_component(node)
click to toggle source
Internal: Build a DocumentComponent
of the given node recursively.
current_node - A Nokogiri::HTML::Document.
Returns a DocumentComponent
.
# File lib/slacken/dom_container.rb, line 24 def build_document_component(node) DocumentComponent.new( node.name.downcase, build_document_components_array(node.children), attrs_of(node) ) end
build_document_components_array(node_set)
click to toggle source
Internal: Build sequence of DocumentComponent
objects for each given nodes.
nodes - A Nokogiri::XML::NodeSet.
Returns an Array of DocumentComponents.
# File lib/slacken/dom_container.rb, line 37 def build_document_components_array(node_set) node_set .reject { |node| node.respond_to?(:html_dtd?) && node.html_dtd? } .map { |node| build_document_component(node) } end