Sha256: 973be792aacb13b9f12acc647bae6a9f9313ee6aa8a5a6a7b1f7b4c77cbcf291

Contents?: true

Size: 957 Bytes

Versions: 7

Compression:

Stored size: 957 Bytes

Contents

require 'lotus/utils/class'
require 'lotus/utils/string'

module Lotus
  module Routing
    module Parsing
      class UnknownParserError < ::StandardError
        def initialize(parser)
          super("Unknown Parser: `#{ parser }'")
        end
      end

      class Parser
        def self.for(parser)
          case parser
          when String, Symbol
            require_parser(parser)
          else
            parser
          end
        end

        def mime_types
          raise NotImplementedError
        end

        def parse(body)
          Hash.new
        end

        private
        def self.require_parser(parser)
          require "lotus/routing/parsing/#{ parser }_parser"

          parser = Utils::String.new(parser).classify
          Utils::Class.load!("Lotus::Routing::Parsing::#{ parser }Parser").new
        rescue LoadError, NameError
          raise UnknownParserError.new(parser)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lotus-router-0.4.3 lib/lotus/routing/parsing/parser.rb
lotus-router-0.4.2 lib/lotus/routing/parsing/parser.rb
lotus-router-0.4.1 lib/lotus/routing/parsing/parser.rb
lotus-router-0.4.0 lib/lotus/routing/parsing/parser.rb
lotus-router-0.3.0 lib/lotus/routing/parsing/parser.rb
lotus-router-0.2.1 lib/lotus/routing/parsing/parser.rb
lotus-router-0.2.0 lib/lotus/routing/parsing/parser.rb