ash_authentication_phoenix/dev/dev_web.ex
2023-03-09 21:05:00 -05:00

112 lines
2.3 KiB
Elixir

defmodule DevWeb do
@moduledoc false
# The entrypoint for defining your web interface, such
# as controllers, views, channels and so on.
# This can be used in your application as:
# use DevWeb, :controller
# use DevWeb, :view
# The definitions below will be executed for every view,
# controller, etc, so keep them short and clean, focused
# on imports, uses and aliases.
# Do NOT define functions inside the quoted expressions
# below. Instead, define any helper function in modules
# and import those modules here.
@doc false
def controller do
quote do
use Phoenix.Controller, namespace: DevWeb
import Plug.Conn
alias DevWeb.Router.Helpers, as: Routes
end
end
@doc false
def view do
quote do
use Phoenix.View,
root: "dev/dev_web/templates",
namespace: DevWeb
# Import convenience functions from controllers
import Phoenix.Controller,
only: [view_module: 1, view_template: 1]
# Include shared imports and aliases for views
unquote(view_helpers())
end
end
@doc false
def live_view do
quote do
use Phoenix.LiveView,
layout: {DevWeb.LayoutView, "live.html"}
unquote(view_helpers())
end
end
@doc false
def live_component do
quote do
use Phoenix.LiveComponent
unquote(view_helpers())
end
end
@doc false
def component do
quote do
use Phoenix.Component
unquote(view_helpers())
end
end
@doc false
def router do
quote do
use Phoenix.Router, helpers_moduledoc: false
import Plug.Conn
import Phoenix.Controller
import Phoenix.LiveView.Router
end
end
@doc false
def channel do
quote do
use Phoenix.Channel
end
end
defp view_helpers do
quote do
# Use all HTML functionality (forms, tags, etc)
use Phoenix.HTML
use Phoenix.Component
# Import basic rendering functionality (render, render_layout, etc)
import Phoenix.View
import DevWeb.ErrorHelpers
alias DevWeb.Router.Helpers, as: Routes
end
end
@doc """
When used, dispatch to the appropriate controller/view/etc.
"""
defmacro __using__(which) when is_atom(which) do
apply(__MODULE__, which, [])
end
end