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