Class: Taketo::ConfigTraverser

Inherits:
Object
  • Object
show all
Defined in:
lib/taketo/config_traverser.rb

Instance Method Summary collapse

Constructor Details

#initialize(root) ⇒ ConfigTraverser

Returns a new instance of ConfigTraverser.



7
8
9
# File 'lib/taketo/config_traverser.rb', line 7

def initialize(root)
  @root = root
end

Instance Method Details

#visit_depth_first(visitor) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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