Class: InputSanitizer::BooleanConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/input_sanitizer/default_converters.rb

Constant Summary collapse

BOOLEAN_MAP =
{
  true => true,
  false => false,
  'true' => true,
  'false' => false,
  '1' => true,
  '0' => false,
  'yes' => true,
  'no' => false,
  1 => true,
  0 => false,
}

Instance Method Summary collapse

Instance Method Details

#call(value) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/input_sanitizer/default_converters.rb', line 74

def call(value)
  if BOOLEAN_MAP.has_key?(value)
    BOOLEAN_MAP[value]
  else
    truthy, falsy = BOOLEAN_MAP.partition { |_, value| value }
    truthy = truthy.map { |e| "'#{e[0]}'" }.uniq
    falsy = falsy.map { |e| "'#{e[0]}'" }.uniq

    message = "Invalid boolean: use "
    message += truthy.join(", ")
    message += " for true, or "
    message += falsy.join(", ")
    message += " for false."
    raise ConversionError.new(message)
  end
end