Class/Module Index [+]

Quicksearch

HTML5::TreeWalkers::NonRecursiveTreeWalker

Public Instance Methods

each() click to toggle source
# 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
first_child(node) click to toggle source
# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 86
def first_child(node)
  raise NotImplementedError
end
next_sibling(node) click to toggle source
# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 90
def next_sibling(node)
  raise NotImplementedError
end
node_details(node) click to toggle source
# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 82
def node_details(node)
  raise NotImplementedError
end
parent(node) click to toggle source
# File lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb, line 94
def parent(node)
  raise NotImplementedError
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.