class Dry::Types::Constrained::Coercible
Common coercion-related API for constrained types
@api public
Public Instance Methods
call_safe(input) { || ... }
click to toggle source
@return [Object]
@api private
# File lib/dry/types/constrained/coercible.rb, line 27 def call_safe(input) coerced = type.call_safe(input) { return yield } if rule[coerced] coerced else yield(coerced) end end
call_unsafe(input)
click to toggle source
@return [Object]
@api private
# File lib/dry/types/constrained/coercible.rb, line 13 def call_unsafe(input) coerced = type.call_unsafe(input) result = rule.(coerced) if result.success? coerced else raise ConstraintError.new(result, input) end end
try(input) { |failure| ... }
click to toggle source
@see Dry::Types::Constrained#try
@api public
# File lib/dry/types/constrained/coercible.rb, line 40 def try(input, &block) result = type.try(input) if result.success? validation = rule.(result.input) if validation.success? result else failure = failure(result.input, ConstraintError.new(validation, input)) block ? yield(failure) : failure end else block ? yield(result) : result end end