Class: BELParser::ASTFilter
- Inherits:
-
Object
- Object
- BELParser::ASTFilter
- Defined in:
- lib/bel_parser/ast_filter.rb
Overview
ASTFilter filters types of Parsers::AST::Node.
Instance Method Summary collapse
- #each(enum = @ast_enum) ⇒ Object
- #filter(ast_enum) ⇒ Object
-
#initialize(ast_enum, *types) ⇒ ASTFilter
constructor
A new instance of ASTFilter.
Constructor Details
#initialize(ast_enum, *types) ⇒ ASTFilter
Returns a new instance of ASTFilter.
6 7 8 9 |
# 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 |
Instance Method Details
#each(enum = @ast_enum) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# 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) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# 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 |