class BELParser::ASTFilter

ASTFilter filters types of {BELParser::Parsers::AST::Node}.

Public Class Methods

new(ast_enum, *types) click to toggle source
# File lib/bel_parser/ast_filter.rb, line 6
def initialize(ast_enum, *types)
  @ast_enum = ast_enum
  @types    = Hash[types.map { |t| [t, true] }]
end

Public Instance Methods

each(enum = @ast_enum) { |line_number, line, selected| ... } click to toggle source
# File lib/bel_parser/ast_filter.rb, line 11
def each(enum = @ast_enum)
  if block_given?
    enum.each do |(line_number, line, ast_results)|
      selected = filter(ast_results)
      yield([line_number, line, selected]) unless selected.empty?
    end
  else
    enum_for(:each, enum)
  end
end
filter(ast_enum) click to toggle source
# File lib/bel_parser/ast_filter.rb, line 22
def filter(ast_enum)
  ast_enum.select do |node|
    if node.nil?
      @types[nil]
    else
      @types[node.type]
    end
  end
end