44 lines
1.2 KiB
Elixir
44 lines
1.2 KiB
Elixir
defmodule NimbleOptions.ValidationError do
|
|
@moduledoc """
|
|
An error that is returned (or raised) when options are invalid.
|
|
|
|
Since this is an exception, you can either raise it directly with `raise/1`
|
|
or turn it into a message string with `Exception.message/1`.
|
|
|
|
See [`%NimbleOptions.ValidationError{}`](`__struct__/0`) for documentation on the fields.
|
|
"""
|
|
|
|
@type t() :: %__MODULE__{
|
|
key: atom(),
|
|
keys_path: [atom()],
|
|
value: term()
|
|
}
|
|
|
|
@doc """
|
|
The error struct.
|
|
|
|
Only the following documented fields are considered public. All other fields are
|
|
considered private and should not be referenced:
|
|
|
|
* `:key` (`t:atom/0`) - The key that did not successfully validate.
|
|
|
|
* `:keys_path` (list of `t:atom/0`) - If the key is nested, this is the path to the key.
|
|
|
|
* `:value` (`t:term/0`) - The value that failed to validate. This field is `nil` if there
|
|
was no value provided.
|
|
|
|
"""
|
|
defexception [:message, :key, :value, keys_path: []]
|
|
|
|
@impl true
|
|
def message(%__MODULE__{message: message, keys_path: keys_path}) do
|
|
suffix =
|
|
case keys_path do
|
|
[] -> ""
|
|
keys -> " (in options #{inspect(keys)})"
|
|
end
|
|
|
|
message <> suffix
|
|
end
|
|
end
|