Sha256: e8850516c700dd930fbcd9066e00a9168103831dc4f61bb1f6014cab73c47db7

Contents?: true

Size: 570 Bytes

Versions: 6

Compression:

Stored size: 570 Bytes

Contents

# typed: strict

module Typed
  module Coercion
    extend T::Sig

    sig { params(coercer: T.class_of(Coercer)).void }
    def self.register_coercer(coercer)
      CoercerRegistry.instance.register(coercer)
    end

    sig { type_parameters(:U).params(type: T::Types::Base, value: Value).returns(Result[Value, CoercionError]) }
    def self.coerce(type:, value:)
      coercer = CoercerRegistry.instance.select_coercer_by(type:)

      return Failure.new(CoercionNotSupportedError.new(type:)) unless coercer

      coercer.new.coerce(type:, value:)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sorbet-schema-0.9.2 lib/typed/coercion.rb
sorbet-schema-0.9.1 lib/typed/coercion.rb
sorbet-schema-0.9.0 lib/typed/coercion.rb
sorbet-schema-0.8.0 lib/typed/coercion.rb
sorbet-schema-0.7.2 lib/typed/coercion.rb
sorbet-schema-0.7.1 lib/typed/coercion.rb