Sha256: 867ef62ac25bbc0d73fa3731afc9fa8c63f8f2dda39a6b039b33344cb9c3855b

Contents?: true

Size: 471 Bytes

Versions: 5

Compression:

Stored size: 471 Bytes

Contents

require 'delegate'
require 'forwardable'

module Taketo
  class ConfigTraverser
    def initialize(root)
      @root = root
    end

    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
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
taketo-0.2.0.alpha lib/taketo/config_traverser.rb
taketo-0.1.3 lib/taketo/config_traverser.rb
taketo-0.1.2 lib/taketo/config_traverser.rb
taketo-0.1.1 lib/taketo/config_traverser.rb
taketo-0.1.0 lib/taketo/config_traverser.rb