lib/pow/phoenix/view.ex
defmodule Pow.Phoenix.View do
@moduledoc """
View macros for Pow Phoenix, that calls render methods generated with
`Pow.Phoenix.Template`.
## Usage
defmodule MyExtension.Phoenix.CustomView do
@moduledoc false
use Pow.Phoenix.View
end
"""
@doc false
defmacro __using__(_opts) do
quote do
@template_module unquote(__MODULE__).__template_module__(__MODULE__)
def render(action, assigns) do
@template_module.render(action, assigns)
end
end
end
@doc false
def __template_module__(view_module) do
[view_module | context] =
view_module
|> Module.split()
|> Enum.reverse()
template_module =
view_module
|> String.trim_trailing("View")
|> Kernel.<>("Template")
context
|> Enum.reverse()
|> Enum.concat([template_module])
|> Module.concat()
end
end