Class: Skit::Serialization::Registry
- Inherits:
-
Object
- Object
- Skit::Serialization::Registry
- Extended by:
- T::Sig
- Defined in:
- lib/skit/serialization/registry.rb
Instance Method Summary collapse
- #find_processor(type_spec) ⇒ Object
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
- #processor_for(type_spec) ⇒ Object
- #register(processor_class) ⇒ Object
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
10 11 12 |
# File 'lib/skit/serialization/registry.rb', line 10 def initialize @processors = T.let([], T::Array[T.class_of(Processor::Base)]) end |
Instance Method Details
#find_processor(type_spec) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/skit/serialization/registry.rb', line 20 def find_processor(type_spec) processor_class = @processors.find { |p| p.handles?(type_spec) } raise UnknownTypeError, "No processor for #{type_spec}" unless processor_class processor_class end |
#processor_for(type_spec) ⇒ Object
28 29 30 |
# File 'lib/skit/serialization/registry.rb', line 28 def processor_for(type_spec) find_processor(type_spec).new(type_spec, registry: self) end |
#register(processor_class) ⇒ Object
15 16 17 |
# File 'lib/skit/serialization/registry.rb', line 15 def register(processor_class) @processors << processor_class end |