Module: Sexpr::Parser

Included in:
Citrus
Defined in:
lib/sexpr/parser.rb,
lib/sexpr/parser/citrus.rb

Defined Under Namespace

Classes: Citrus

Class Method Summary collapse

Class Method Details

.factor(external_parser, options = {}) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/sexpr/parser.rb', line 20

def factor(external_parser, options = {})
  return external_parser if Parser===external_parser
  if cl = find_parser_class(external_parser)
    cl.new(external_parser, options)
  else
    raise UnrecognizedParserError, "Parser not recognized: #{external_parser}"
  end
end

.find_parser_class(external_parser) ⇒ Object



14
15
16
17
18
# File 'lib/sexpr/parser.rb', line 14

def find_parser_class(external_parser)
  registered_parser_classes.find{|cl|
    cl.recognizes?(external_parser)
  }
end

.register(parser_class) ⇒ Object



10
11
12
# File 'lib/sexpr/parser.rb', line 10

def register(parser_class)
  registered_parser_classes << parser_class
end

.registered_parser_classesObject



6
7
8
# File 'lib/sexpr/parser.rb', line 6

def registered_parser_classes
  @registered_parser_classes ||= []
end