Exceptional v1.5.2 Exceptional.Phoenix.ViewHelper

Helpers for working with Phoenix views

Summary

Functions

Generate a single error hander

Concrete render of an error in a particular format

Macros

Same as defrender/2, but with a format whitelist (ex. only: [:json])

Types

ast()
ast() :: branch | [branch]
branch()
branch() :: {atom, [any], [any]}
full()
full() :: %{error: String.t, reason: String.t}
response()
response() :: simple | full
simple()
simple() :: %{error: String.t}

Functions

render(atom, list)
render(:errors, [for: non_neg_integer, only: [atom], do: String.t]) :: response
render(String.t, [for: non_neg_integer, format: atom, do: String.t]) :: response

Generate a single error hander

Examples

iex> render(:error, for: 404, format: :json, do: "Oh no!")
{
  :def,
  [context: Exceptional.Phoenix.ViewHelper, import: Kernel],
  [
    {
      :render,
      [context: Exceptional.Phoenix.ViewHelper],
      [
        "404.json",
        {:error_info, [], Exceptional.Phoenix.ViewHelper}
      ]
    },
    [do: {
      :render, [], [
        {
          :<<>>, [], [
            {
              :::,
              [],
              [
                {
                  {:., [], [Kernel, :to_string]},
                  [],
                  [:json]
                },
                {:binary, [], Exceptional.Phoenix.ViewHelper}
              ]
            }
          ]
        },
        "Oh no!",
        {:error_info, [], Exceptional.Phoenix.ViewHelper}
      ]
    }]
  ]
}
render(atom, base_message, error_info)
render(:html | :json, String.t, map) :: response

Concrete render of an error in a particular format

Examples

iex> render(:json, "I'm sorry, I can't do that Dave", %{})
%{error: "I'm sorry, I can't do that Dave"}

Macros

defrender(atom, list)
defrender(term, :error, [for: non_neg_integer | String.t, do: String.t]) :: ast
defrender(term, :error, [for: non_neg_integer, except: [atom], do: String.t]) :: ast
defrender(term, :error, [for: non_neg_integer, only: [atom], do: String.t]) :: ast

Same as defrender/2, but with a format whitelist (ex. only: [:json])