Sha256: 2b456df3b30140f3ebe093cb2a7a255eed89ed0abf96bea47473145c42c5046e
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
module Sexpr module Parser class << self def registered_parser_classes @registered_parser_classes ||= [] end def register(parser_class) registered_parser_classes << parser_class end def find_parser_class(external_parser) registered_parser_classes.find{|cl| cl.recognizes?(external_parser) } end 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 end # class methods private def input_text(input) case input when lambda{|x| x.respond_to?(:to_path)} input_text File.read(input.to_path) when IO input_text input.read when String input else raise InvalidParseSourceError, "Invalid parse source: #{input}" end end end # module Parser end # module Sexpr require_relative "parser/citrus"
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sexpr-0.3.0 | lib/sexpr/parser.rb |