Sha256: e92a50413b5fbc7ee4b3430914ff247ebed1d4cc6f69e66b3d7a7c165846a9fc
Contents?: true
Size: 1.06 KB
Versions: 3
Compression:
Stored size: 1.06 KB
Contents
# typed: strict require "singleton" module Typed module Coercion class CoercerRegistry extend T::Sig include Singleton Registry = T.type_alias { T::Array[T.class_of(Coercer)] } DEFAULT_COERCERS = T.let( [ StringCoercer, SymbolCoercer, BooleanCoercer, IntegerCoercer, FloatCoercer, DateCoercer, EnumCoercer, StructCoercer, TypedArrayCoercer, TypedHashCoercer ], Registry ) sig { void } def initialize @available = T.let(DEFAULT_COERCERS.clone, Registry) end sig { params(coercer: T.class_of(Coercer)).void } def register(coercer) @available.prepend(coercer) end sig { void } def reset! @available = DEFAULT_COERCERS.clone end sig { params(type: T::Types::Base).returns(T.nilable(T.class_of(Coercer))) } def select_coercer_by(type:) @available.find { |coercer| coercer.new.used_for_type?(type) } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
sorbet-schema-0.7.1 | lib/typed/coercion/coercer_registry.rb |
sorbet-schema-0.7.0 | lib/typed/coercion/coercer_registry.rb |
sorbet-schema-0.6.0 | lib/typed/coercion/coercer_registry.rb |