class PseudoHiki::Utils::NodeCollector

Attributes

nodes[R]

Public Class Methods

new(&condition) click to toggle source
# File lib/pseudohiki/utils.rb, line 17
def initialize(&condition)
  @nodes = []
  @condition = condition
end
select(tree, &condition) click to toggle source
# File lib/pseudohiki/utils.rb, line 11
def self.select(tree, &condition)
  collector = new(&condition)
  collector.visit(tree)
  collector.nodes
end

Public Instance Methods

visit(tree, memo=nil) click to toggle source
# File lib/pseudohiki/utils.rb, line 22
def visit(tree, memo=nil)
  if @condition.call(tree)
    @nodes.push tree
  else
    tree.each do |node|
      node.accept(self, memo) if node.respond_to? :accept
    end
  end
end