Class: CallbackTreeNodeVisitor
- Inherits:
-
TreeNodeVisitor
- Object
- TreeNodeVisitor
- CallbackTreeNodeVisitor
- 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
- #enter_tree_node(tree_node) ⇒ Object
- #exit_tree_node(tree_node) ⇒ Object
-
#initialize ⇒ CallbackTreeNodeVisitor
constructor
A new instance of CallbackTreeNodeVisitor.
- #on_enter_tree_node(&action) ⇒ Object
- #on_visit_leaf_node(&action) ⇒ Object
- #visit_leaf_node(leaf_node) ⇒ Object
Constructor Details
#initialize ⇒ CallbackTreeNodeVisitor
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 |