Class: Skit::Serialization::Registry

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/skit/serialization/registry.rb

Instance Method Summary collapse

Constructor Details

#initializeRegistry

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

Raises:



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