class Taketo::ConfigTraverser

Public Class Methods

new(root) click to toggle source
# File lib/taketo/config_traverser.rb, line 7
def initialize(root)
  @root = root
end

Public Instance Methods

visit_depth_first(visitor) click to toggle source
# File lib/taketo/config_traverser.rb, line 11
def visit_depth_first(visitor)
  path_stack = [@root]

  while path_stack.any?
    node = path_stack.pop
    visitor.visit(node)

    node.class.node_types.each do |node_type|
      node.nodes(node_type).reverse_each do |n|
        path_stack.push(n)
      end
    end
  end
end