class Grape::Validations::ParamsScope

def infer_coercion(validations)

Raises:
  • (ArgumentError) - if the given type options are invalid

Returns:
  • (class-like) - type to which the parameter will be coerced

Parameters:
  • validations (Hash) -- list of validations supplied to the
def infer_coercion(validations)
  raise ArgumentError, ':type may not be supplied with :types' if validations.key?(:type) && validations.key?(:types)
  validations[:coerce] = (options_key?(:type, :value, validations) ? validations[:type][:value] : validations[:type]) if validations.key?(:type)
  validations[:coerce_message] = (options_key?(:type, :message, validations) ? validations[:type][:message] : nil) if validations.key?(:type)
  validations[:coerce] = (options_key?(:types, :value, validations) ? validations[:types][:value] : validations[:types]) if validations.key?(:types)
  validations[:coerce_message] = (options_key?(:types, :message, validations) ? validations[:types][:message] : nil) if validations.key?(:types)
  validations.delete(:types) if validations.key?(:types)
  coerce_type = validations[:coerce]
  # Special case - when the argument is a single type that is a
  # variant-type collection.
  if Types.multiple?(coerce_type) && validations.key?(:type)
    validations[:coerce] = Types::VariantCollectionCoercer.new(
      coerce_type,
      validations.delete(:coerce_with)
    )
  end
  validations.delete(:type)
  coerce_type
end