Class: CallbackTreeNodeVisitor2

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

Overview

Executes a block when enter in a node The block are defined from on_enter_X methods The blocks take as argument the node and the parent_node

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCallbackTreeNodeVisitor2

Returns a new instance of CallbackTreeNodeVisitor2.



11
12
13
14
15
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 11

def initialize
  super()
  @stack = []
  @root = nil
end

Instance Attribute Details

#rootObject (readonly)

Returns the value of attribute root.



9
10
11
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 9

def root
  @root
end

Instance Method Details

#enter_tree_node(tree_node) ⇒ Object



25
26
27
28
29
30
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 25

def enter_tree_node( tree_node )
  parent_node = @stack.empty? ? nil : @stack.last
  new_tree_node = @action_enter_tree_node.call( tree_node, parent_node )
  @root = new_tree_node if @stack.empty?
  @stack.push( new_tree_node )
end

#exit_tree_node(tree_node) ⇒ Object



32
33
34
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 32

def exit_tree_node( tree_node )
  @stack.pop
end

#on_enter_tree_node(&action) ⇒ Object



17
18
19
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 17

def on_enter_tree_node( &action )
  @action_enter_tree_node = action
end

#on_visit_leaf_node(&action) ⇒ Object



21
22
23
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 21

def on_visit_leaf_node( &action )
  @action_visit_leaf_node = action
end

#visit_leaf_node(leaf_node) ⇒ Object



36
37
38
39
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 36

def visit_leaf_node( leaf_node )
  parent_node = @stack.last
  @action_visit_leaf_node.call( leaf_node, parent_node )
end