Sha256: ea3f2c1c7ce0a48604f85503781f366baffaae14e889147cc5f1aa3194c8e82b

Contents?: true

Size: 580 Bytes

Versions: 4

Compression:

Stored size: 580 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(field: Field, value: Value).returns(Result[Value, CoercionError]) }
    def self.coerce(field:, value:)
      coercer = CoercerRegistry.instance.select_coercer_by(type: field.type)

      return Failure.new(CoercionNotSupportedError.new) unless coercer

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sorbet-schema-0.3.0 lib/typed/coercion.rb
sorbet-schema-0.2.2 lib/typed/coercion.rb
sorbet-schema-0.2.1 lib/typed/coercion.rb
sorbet-schema-0.2.0 lib/typed/coercion.rb