Module: Oga::XML::Traversal
Overview
Module that provides methods to traverse DOM trees.
Instance Method Summary collapse
-
#each_node {|The| ... } ⇒ Object
Traverses through the node and yields every child node to the supplied block.
Instance Method Details
#each_node {|The| ... } ⇒ Object
Traverses through the node and yields every child node to the supplied block.
The block's body can also determine whether or not to traverse child
nodes. Preventing a node's children from being traversed can be done by
using throw :skip_children
This method uses a combination of breadth-first and depth-first traversal to traverse the entire XML tree in document order. See http://en.wikipedia.org/wiki/Breadth-first_search for more information.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/oga/xml/traversal.rb', line 33 def each_node visit = children.to_a.dup # copy it since we're modifying the array until visit.empty? current = visit.shift catch :skip_children do yield current current.children.to_a.reverse_each do |child| visit.unshift(child) end end end end |