Sha256: 8ffc6a5844fe2bb6dfc02bcc78de3f0bb3c08965ea9414106cf9055b3abaa67d

Contents?: true

Size: 596 Bytes

Versions: 7

Compression:

Stored size: 596 Bytes

Contents

#
# Clone a tree_node
#
class CloneTreeNodeVisitor < TreeNodeVisitor

  attr_reader :cloned_root

  def initialize
    super
    @cloned_root = nil
    @stack = []
  end

  def enter_tree_node( treeNode )
    if @stack.empty?
      cloned_tree_node = TreeNode.new( treeNode.name )
      @cloned_root = cloned_tree_node
    else
      cloned_tree_node = TreeNode.new( treeNode.name, @stack.last )
    end
    @stack.push( cloned_tree_node )
  end

  def exit_tree_node( treeNode )
    @stack.pop
  end

  def visit_leaf_node( leaf_node )
    LeafNode.new( leaf_node.name, @stack.last )
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gf-treevisitor-0.0.11 lib/treevisitor/visitors/clone_tree_node_visitor.rb
gf-treevisitor-0.0.12 lib/treevisitor/visitors/clone_tree_node_visitor.rb
gf-treevisitor-0.0.13 lib/treevisitor/visitors/clone_tree_node_visitor.rb
gf-treevisitor-0.0.15 lib/treevisitor/visitors/clone_tree_node_visitor.rb
gf-treevisitor-0.0.16 lib/treevisitor/visitors/clone_tree_node_visitor.rb
gf-treevisitor-0.0.18 lib/treevisitor/visitors/clone_tree_node_visitor.rb
gf-treevisitor-0.0.19 lib/treevisitor/visitors/clone_tree_node_visitor.rb