lib/draft/type/tuple.ex
defmodule Draft.Type.Tuple do
@behaviour Draft.Type.Behaviour
@impl Draft.Type.Behaviour
def cast(nil, _opts) do
{:ok, nil}
end
@impl Draft.Type.Behaviour
def cast(value, _opts) when is_tuple(value) do
{:ok, value}
end
@impl Draft.Type.Behaviour
def cast(value, _opts) when is_list(value) do
{:ok, List.to_tuple(value)}
end
@impl Draft.Type.Behaviour
def cast(_value, _opts) do
{:error, ["invalid tuple"]}
end
@impl Draft.Type.Behaviour
def dump(value, _opts \\ []) do
{:ok, value}
end
end