Class: CloneTreeNodeVisitor

Inherits:
TreeNodeVisitor show all
Defined in:
lib/treevisitor/visitors/clone_tree_node_visitor.rb

Overview

Clone a tree_node

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCloneTreeNodeVisitor

Returns a new instance of CloneTreeNodeVisitor.



8
9
10
11
12
# File 'lib/treevisitor/visitors/clone_tree_node_visitor.rb', line 8

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

Instance Attribute Details

#cloned_rootObject (readonly)

Returns the value of attribute cloned_root.



6
7
8
# File 'lib/treevisitor/visitors/clone_tree_node_visitor.rb', line 6

def cloned_root
  @cloned_root
end

Instance Method Details

#enter_tree_node(treeNode) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/treevisitor/visitors/clone_tree_node_visitor.rb', line 14

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

#exit_tree_node(treeNode) ⇒ Object



24
25
26
# File 'lib/treevisitor/visitors/clone_tree_node_visitor.rb', line 24

def exit_tree_node( treeNode )
  @stack.pop
end

#visit_leaf_node(leaf_node) ⇒ Object



28
29
30
# File 'lib/treevisitor/visitors/clone_tree_node_visitor.rb', line 28

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