class ReeMapper::Bool

def cast(value, name:, role: nil)

def cast(value, name:, role: nil)
  if TRUE_CAST_VALUES.include?(value)
    true
  elsif FALSE_CAST_VALUES.include?(value)
    false
  else
    raise ReeMapper::CoercionError, "`#{name}` is invalid boolean"
  end
end

def db_dump(value, name:, role: nil)

def db_dump(value, name:, role: nil)
  serialize(value, name: name, role: role)
end

def db_load(value, name:, role: nil)

def db_load(value, name:, role: nil)
  cast(value, name: name, role: role)
end

def serialize(value, name:, role: nil)

def serialize(value, name:, role: nil)
  if value.is_a?(TrueClass) || value.is_a?(FalseClass)
    value
  else
    raise ReeMapper::TypeError, "`#{name}` should be a boolean"
  end
end