Sha256: ea8413583c0161cf38ef94364612dd1649a8cf3ffca71edec642be5b7eba8333
Contents?: true
Size: 813 Bytes
Versions: 11
Compression:
Stored size: 813 Bytes
Contents
# typed: strict require "date" module Typed module Coercion class DateCoercer < Coercer extend T::Generic Target = type_member { {fixed: Date} } sig { override.params(type: T::Types::Base).returns(T::Boolean) } def used_for_type?(type) T::Utils.coerce(type) == T::Utils.coerce(Date) end sig { override.params(type: T::Types::Base, value: Value).returns(Result[Target, CoercionError]) } def coerce(type:, value:) return Failure.new(CoercionError.new("Type must be a Date.")) unless used_for_type?(type) return Success.new(value) if value.is_a?(Date) Success.new(Date.parse(value)) rescue Date::Error, TypeError Failure.new(CoercionError.new("'#{value}' cannot be coerced into Date.")) end end end end
Version data entries
11 entries across 11 versions & 1 rubygems