Class: CallbackTreeNodeVisitor2
- Inherits:
-
TreeNodeVisitor
- Object
- TreeNodeVisitor
- CallbackTreeNodeVisitor2
- 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
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Instance Method Summary collapse
- #enter_tree_node(tree_node) ⇒ Object
- #exit_tree_node(tree_node) ⇒ Object
-
#initialize ⇒ CallbackTreeNodeVisitor2
constructor
A new instance of CallbackTreeNodeVisitor2.
- #on_enter_tree_node(&action) ⇒ Object
- #on_visit_leaf_node(&action) ⇒ Object
- #visit_leaf_node(leaf_node) ⇒ Object
Constructor Details
#initialize ⇒ CallbackTreeNodeVisitor2
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
#root ⇒ Object (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 |