defmodule Draft.ErrorRenderer do
@moduledoc """
Implementation of this behaviour should be set in validator options as `:error_renderer`
or in `:draft` application config with same key.
Common pattern is to expect `:message` key in validator options and if it not set
use `default_message` (use `get_message` function for it).
Result of `message` function appears in `Draft.errors` error tuple as last element, for those
validators who use `Draft.Validator.ErrorMessage` (in general they should).
```
"""
@callback message(validator_options :: list(), default_message :: String.t(), context :: list()) ::
any()
def get_message(options, default) do
if Keyword.keyword?(options) do
Keyword.get(options, :message, default)
else
default
end
end
end