Module: Zodra::ParamsCoercer

Defined in:
lib/zodra/params_coercer.rb

Constant Summary collapse

UUID_PATTERN =
/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/i
DECIMAL_PATTERN =
/\A-?\d+(\.\d+)?\z/
TRUE_VALUES =
%w[true 1 yes].freeze
FALSE_VALUES =
%w[false 0 no].freeze

Class Method Summary collapse

Class Method Details

.call(value, type, of: nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/zodra/params_coercer.rb', line 15

def self.call(value, type, of: nil)
  case type
  when :string   then value.to_s
  when :integer  then coerce_integer(value)
  when :decimal  then coerce_decimal(value)
  when :number   then coerce_number(value)
  when :boolean  then coerce_boolean(value)
  when :datetime then coerce_datetime(value)
  when :date     then coerce_date(value)
  when :uuid     then coerce_uuid(value)
  when :binary   then value.to_s
  when :array    then coerce_array(value, of)
  else
    scalar = ScalarRegistry.global.find(type)
    scalar ? scalar.coercer.call(value) : value
  end
end