lib/kvasir/type/boolean.ex
defmodule Kvasir.Type.Boolean do
@moduledoc ~S"""
"""
use Kvasir.Type
@impl Kvasir.Type
def parse(boolean, opts \\ [])
def parse(true, _opts), do: {:ok, true}
def parse(false, _opts), do: {:ok, false}
def parse(binary, _opts) when is_binary(binary) do
binary = String.downcase(binary)
cond do
binary in ["true", "1"] -> {:ok, true}
binary in ["false", "0"] -> {:ok, false}
:error -> {:error, :invalid_boolean}
end
end
def parse(_, _opts), do: {:error, :invalid_boolean}
end