Sha256: bfad2305e05bfcb2881190af5260f7eabe624189b810dd470ac950b1ad1096a5

Contents?: true

Size: 925 Bytes

Versions: 5

Compression:

Stored size: 925 Bytes

Contents

#
# 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
#
class CallbackTreeNodeVisitor < TreeNodeVisitor

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

  def on_enter_tree_node( &action )
    @action_enter_tree_node = action
  end

  def on_visit_leaf_node( &action )
    @action_visit_leaf_node = action
  end

  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

  def exit_tree_node( tree_node )
    @stack.pop
  end

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

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
gf-treevisitor-0.0.13 lib/treevisitor/visitors/callback_tree_node_visitor.rb
gf-treevisitor-0.0.15 lib/treevisitor/visitors/callback_tree_node_visitor.rb
gf-treevisitor-0.0.16 lib/treevisitor/visitors/callback_tree_node_visitor.rb
gf-treevisitor-0.0.18 lib/treevisitor/visitors/callback_tree_node_visitor.rb
gf-treevisitor-0.0.19 lib/treevisitor/visitors/callback_tree_node_visitor.rb