Sha256: 5bc21db1d091772de6d18f7434f970498329d177dc392a4d65dd4daabf2e1975

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

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

2 entries across 2 versions & 2 rubygems

Version Path
tylerhunt-relax-0.0.5 lib/relax/parsers/factory.rb
relax-0.0.5 lib/relax/parsers/factory.rb