Sha256: b820d4d2b8bea60d24e163a36ddf4b78c2c2748918e885cc70c5accd30d24d33

Contents?: true

Size: 915 Bytes

Versions: 3

Compression:

Stored size: 915 Bytes

Contents

module Relax
  module Parsers
    # Manages the Relax::Parsers in the library.
    module Factory
      class << self
        # Returns the parser class which has been registered for the given
        # +name+.
        def get(name)
          @@parsers ||= {}
          @@parsers[name] || raise(UnrecognizedParser, "Given parser name not recognized: #{name.inspect}. Expected one of: #{@@parsers.keys.inspect}")
        end

        # Registers a new parser with the factory. The +name+ should be unique,
        # but if not, it will override the previously defined parser for the
        # given +name+.
        def register(name, klass)
          @@parsers ||= {}
          @@parsers[:default] = klass if @@parsers.empty?
          @@parsers[name] = klass
        end

        # Removes all registered parsers from the factory.
        def clear!
          @@parsers = {}
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
dbalatero-relax-0.0.7.1 lib/relax/parsers/factory.rb
relax-0.0.6 lib/relax/parsers/factory.rb
relax-0.0.7 lib/relax/parsers/factory.rb