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
- #_on_enter_tree_node(src_tree_node, dst_parent_node) ⇒ Object
- #_on_visit_leaf_node(src_leaf_node, parent_node) ⇒ Object
- #enter_tree_node(src_tree_node) ⇒ Object
- #exit_tree_node(src_tree_node) ⇒ Object
-
#initialize(delegate = nil) ⇒ CallbackTreeNodeVisitor2
constructor
A new instance of CallbackTreeNodeVisitor2.
- #on_enter_tree_node(&action) ⇒ Object
- #on_visit_leaf_node(&action) ⇒ Object
- #visit_leaf_node(src_leaf_node) ⇒ Object
Constructor Details
#initialize(delegate = nil) ⇒ CallbackTreeNodeVisitor2
Returns a new instance of CallbackTreeNodeVisitor2.
11 12 13 14 15 16 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 11 def initialize( delegate = nil) super() @stack = [] @root = nil @delegate = delegate 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
#_on_enter_tree_node(src_tree_node, dst_parent_node) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 26 def _on_enter_tree_node( src_tree_node, dst_parent_node ) if @action_enter_tree_node dst_tree_node = @action_enter_tree_node.call( src_tree_node, dst_parent_node ) elsif @delegate dst_tree_node = @delegate.on_enter_tree_node( src_tree_node, dst_parent_node ) end dst_tree_node end |
#_on_visit_leaf_node(src_leaf_node, parent_node) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 35 def _on_visit_leaf_node( src_leaf_node, parent_node ) if @action_visit_leaf_node @action_visit_leaf_node.call( src_leaf_node, parent_node ) elsif @delegate @delegate.on_visit_leaf_node( src_leaf_node, parent_node ) end end |
#enter_tree_node(src_tree_node) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 43 def enter_tree_node( src_tree_node ) dst_parent_node = @stack.empty? ? nil : @stack.last dst_tree_node = _on_enter_tree_node( src_tree_node, dst_parent_node ) @root = dst_tree_node if @stack.empty? @stack.push( dst_tree_node ) end |
#exit_tree_node(src_tree_node) ⇒ Object
50 51 52 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 50 def exit_tree_node( src_tree_node ) @stack.pop end |
#on_enter_tree_node(&action) ⇒ Object
18 19 20 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 18 def on_enter_tree_node( &action ) @action_enter_tree_node = action end |
#on_visit_leaf_node(&action) ⇒ Object
22 23 24 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 22 def on_visit_leaf_node( &action ) @action_visit_leaf_node = action end |
#visit_leaf_node(src_leaf_node) ⇒ Object
54 55 56 57 |
# File 'lib/treevisitor/visitors/callback_tree_node_visitor2.rb', line 54 def visit_leaf_node( src_leaf_node ) parent_node = @stack.last _on_visit_leaf_node( src_leaf_node, parent_node ) end |