module RSchema::Coercers::Boolean

Coerces certain strings, and nil, to true or false

Constants

FALSEY_STRINGS
TRUTHY_STRINGS

Public Instance Methods

build(_schema) click to toggle source
# File lib/rschema/coercers/boolean.rb, line 14
def build(_schema)
  self
end
call(value) click to toggle source
# File lib/rschema/coercers/boolean.rb, line 18
def call(value)
  case value
  when true, false then Result.success(value)
  when nil then Result.success(false)
  when String then coerce_string(value)
  else Result.failure
  end
end
will_affect?(value) click to toggle source
# File lib/rschema/coercers/boolean.rb, line 27
def will_affect?(value)
  value != true && value != false
end

Private Instance Methods

coerce_string(str) click to toggle source
# File lib/rschema/coercers/boolean.rb, line 33
def coerce_string(str)
  if TRUTHY_STRINGS.include?(str.downcase)
    Result.success(true)
  elsif FALSEY_STRINGS.include?(str.downcase)
    Result.success(false)
  else
    Result.failure
  end
end