Packages
maru
0.10.6
0.14.0-pre.1
0.13.2
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
REST-like API micro-framework for elixir inspired by grape.
Current section
Files
Jump to
Current section
Files
lib/maru/builder/before.ex
defmodule Maru.Builder.Before do
@moduledoc """
DSLs for defining top-level plugs.
"""
@doc """
Define a top-level `Plug`.
"""
defmacro plug(plug)
defmacro plug({:when, _, [plug, guards]}) do
do_plug(plug, [], guards)
end
defmacro plug(plug) do
do_plug(plug, [], true)
end
@doc """
Define a top-level `Plug` struct with options and guards.
"""
defmacro plug(plug, opts)
defmacro plug(plug, {:when, _, [opts, guards]}) do
do_plug(plug, opts, guards)
end
defmacro plug(plug, opts) do
do_plug(plug, opts, true)
end
defp do_plug(plug, opts, guards) do
quote do
@plugs_before {
unquote(plug),
unquote(opts),
unquote(Macro.escape(guards)),
}
end
end
@doc """
Warning when use plug_overridable within `before` block.
"""
defmacro plug_overridable(_, _, _ \\ nil) do
quote do
IO.write :stderr, "Warning: #{inspect __MODULE__}: plug_overridable not works within `before` block, Ignore.\n"
end
end
end