defmodule Fussy.Validators.Default do
@behaviour Fussy.Validator
alias Fussy.Utils
defstruct [:inner, :default]
@opaque t :: %__MODULE__{}
@spec new(Fussy.Validator.t(), term()) :: __MODULE__.t()
def new(inner, default) do
%__MODULE__{inner: inner, default: default}
end
def validate(%__MODULE__{} = v, term), do: validate(v, [], term)
@impl true
def validate(%__MODULE__{default: default}, _path, nil), do: {:ok, default}
@impl true
def validate(%__MODULE__{inner: inner}, path, term), do: Utils.validate_using(inner, path, term)
end