Class: CallbackTreeNodeVisitor

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

Overview

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

Instance Method Summary collapse

Constructor Details

#initializeCallbackTreeNodeVisitor

Returns a new instance of CallbackTreeNodeVisitor.



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

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

Instance Method Details

#enter_tree_node(tree_node) ⇒ Object



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

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

#exit_tree_node(tree_node) ⇒ Object



31
32
33
# File 'lib/treevisitor/visitors/callback_tree_node_visitor.rb', line 31

def exit_tree_node( tree_node )
  @stack.pop
end

#on_enter_tree_node(&action) ⇒ Object



16
17
18
# File 'lib/treevisitor/visitors/callback_tree_node_visitor.rb', line 16

def on_enter_tree_node( &action )
  @action_enter_tree_node = action
end

#on_visit_leaf_node(&action) ⇒ Object



20
21
22
# File 'lib/treevisitor/visitors/callback_tree_node_visitor.rb', line 20

def on_visit_leaf_node( &action )
  @action_visit_leaf_node = action
end

#visit_leaf_node(leaf_node) ⇒ Object



35
36
37
38
# File 'lib/treevisitor/visitors/callback_tree_node_visitor.rb', line 35

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