Class: EvilEvents::Shared::TypeConverter::ConverterRegistry
- Inherits:
-
Object
- Object
- EvilEvents::Shared::TypeConverter::ConverterRegistry
- Defined in:
- lib/evil_events/shared/type_converter/converter_registry.rb
Overview
Constant Summary collapse
- ConverterRegistryError =
Class.new(StandardError)
- ConverterNotRegisteredError =
Class.new(ConverterRegistryError)
Instance Attribute Summary collapse
- #converters ⇒ Coucnrrent::Map readonly
Instance Method Summary collapse
-
#initialize ⇒ ConverterRegistry
constructor
A new instance of ConverterRegistry.
- #register(type_name, coercer) ⇒ Converter
- #resolve(type) ⇒ Mixed (also: #[])
Constructor Details
#initialize ⇒ ConverterRegistry
Returns a new instance of ConverterRegistry.
20 21 22 |
# File 'lib/evil_events/shared/type_converter/converter_registry.rb', line 20 def initialize @converters = EvilEvents::Shared::DependencyContainer.new end |
Instance Attribute Details
#converters ⇒ Coucnrrent::Map (readonly)
16 17 18 |
# File 'lib/evil_events/shared/type_converter/converter_registry.rb', line 16 def converters @converters end |
Instance Method Details
#register(type_name, coercer) ⇒ Converter
31 32 33 34 35 36 37 38 |
# File 'lib/evil_events/shared/type_converter/converter_registry.rb', line 31 def register(type_name, coercer) raise ArgumentError unless type_name.is_a?(Symbol) raise ArgumentError unless coercer.is_a?(Proc) Converter.new(coercer).tap do |converter| converters.register(type_name, converter) end end |
#resolve(type) ⇒ Mixed Also known as: []
46 47 48 |
# File 'lib/evil_events/shared/type_converter/converter_registry.rb', line 46 def resolve(type) converters[type] end |