Packages
zoi
0.2.1
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.9.0-rc.1
0.9.0-rc.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Zoi is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.
Current section
Files
Jump to
Current section
Files
lib/zoi/types/default.ex
defmodule Zoi.Types.Default do
@moduledoc false
use Zoi.Type.Def, fields: [:inner, :value]
def new(inner, value, opts \\ []) do
{meta, opts} = Zoi.Types.Meta.create_meta(opts)
case Zoi.parse(inner, value, opts) do
{:ok, _} ->
opts = Keyword.merge(opts, inner: inner, value: value, meta: meta)
struct!(__MODULE__, opts)
{:error, error} ->
raise ArgumentError,
"Invalid default value: #{inspect(value)}. Reason: #{Zoi.Errors.message(error)}"
end
end
defimpl Zoi.Type do
def parse(%Zoi.Types.Default{value: value}, nil, _opts), do: {:ok, value}
def parse(%Zoi.Types.Default{inner: schema}, value, opts),
do: Zoi.parse(schema, value, opts)
end
end