     author_url: "https://example.com"
   ```
 
+  Raises a `AtomTweaksWeb.PrimerHelpers.MissingConfigurationError` if any of the required
+  application configuration information is not specified and this function is called.
+
   If passed two strings instead of an atom and a keyword list, this function will assume that you
   mean to call `code_with_heart/3` with no options and do so for you.
   """

  def code_with_heart(app_name, options) when is_atom(app_name) and is_list(options) do
    name = Application.get_env(app_name, :author_name)
    url = Application.get_env(app_name, :author_url)

    code_with_heart(name, url, options)
  end

  The application name as an atom.
  """
  @type app_name :: atom

  defmodule MissingConfigurationError do
    defexception [:missing_keys]

    def exception(key) when is_atom(key), do: exception([key])

    def exception(keys) when is_list(keys) do
      %__MODULE__{missing_keys: keys}
    end

    def message(%{missing_keys: missing_keys}) do
      "application configuration missing: #{inspect(missing_keys)}"
    end
  end

  @doc """
  Renders the `avatar` element for the `user`.
