Sha256: df626840c606075f474665080db755c631260db608407dcbf502e2ab798930ee

Contents?: true

Size: 608 Bytes

Versions: 4

Compression:

Stored size: 608 Bytes

Contents

# typed: strict

module Typed
  module Coercion
    class FloatCoercer < Coercer
      extend T::Generic

      Target = type_member { {fixed: Float} }

      sig { override.params(type: T::Class[T.anything]).returns(T::Boolean) }
      def used_for_type?(type)
        type == Float
      end

      sig { override.params(field: Field, value: Value).returns(Result[Target, CoercionError]) }
      def coerce(field:, value:)
        Success.new(Float(value))
      rescue ArgumentError, TypeError
        Failure.new(CoercionError.new("'#{value}' cannot be coerced into Float."))
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

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