defmodule Talos.Types.BooleanType do
@moduledoc """
Boolean type is used to check value is boolean
For example:
```elixir
iex> import Talos, only: [boolean: 1]
iex> shoud_be_boolean = boolean(allow_nil: false)
iex> Talos.valid?(shoud_be_boolean, 2 == 2)
true
iex> Talos.valid?(shoud_be_boolean, "true")
false
```
Additional parameters:
`allow_nil` - allows value to be nil
"""
defstruct allow_nil: false
@type t :: %{
__struct__: any,
allow_nil: boolean
}
@behaviour Talos.Types
def valid?(%__MODULE__{allow_nil: allow_nil}, value) do
case allow_nil do
true -> is_nil(value) || is_boolean(value)
false -> is_boolean(value)
end
end
def errors(type, value) do
case valid?(type, value) do
true -> []
false -> ["#{inspect(value)} does not match type #{inspect(type)}"]
end
end
end