# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 98 def each current_node = @tree while current_node != nil details = node_details(current_node) has_children = false case details.shift when :DOCTYPE yield doctype(*details) when :TEXT text(*details) {|token| yield token} when :ELEMENT name, attributes, has_children = details if VOID_ELEMENTS.include?(name) yield empty_tag(name, attributes.to_a, has_children) has_children = false else yield start_tag(name, attributes.to_a) end when :COMMENT yield comment(details[0]) when :DOCUMENT, :DOCUMENT_FRAGMENT has_children = true when nil # ignore (REXML::XMLDecl is an example) else yield unknown(details[0]) end first_child = has_children ? first_child(current_node) : nil if first_child != nil current_node = first_child else while current_node != nil details = node_details(current_node) if details.shift == :ELEMENT name, attributes, has_children = details yield end_tag(name) if !VOID_ELEMENTS.include?(name) end if @tree == current_node current_node = nil else next_sibling = next_sibling(current_node) if next_sibling != nil current_node = next_sibling break end current_node = parent(current_node) end end end end end
# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 86 def first_child(node) raise NotImplementedError end
# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 90 def next_sibling(node) raise NotImplementedError end
Generated with the Darkfish Rdoc Generator 2.