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
- .factor(external_parser, options = {}) ⇒ Object
- .find_parser_class(external_parser) ⇒ Object
- .register(parser_class) ⇒ Object
- .registered_parser_classes ⇒ Object
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, = {}) return external_parser if Parser===external_parser if cl = find_parser_class(external_parser) cl.new(external_parser, ) 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_classes ⇒ Object
6 7 8 |
# File 'lib/sexpr/parser.rb', line 6 def registered_parser_classes @registered_parser_classes ||= [] end |