lib/draft/error_renderer.ex

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