Packages
maru
0.13.0
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.ex
defmodule Maru.Builder do
@moduledoc """
Generate functions.
For all modules:
Two functions will be generated.
`__routes__/0` for returning routes.
`endpoint/2` for execute endpoint block.
For plug modules:
You can define a plug module by `use Maru.Router, make_plug: true` or
`config :maru, MyPlugModule` within config.exs.
Two functions `init/1` and `call/2` will be generated for making this module
a `Plug`. The function `endpoint/2` will be called by this `Plug`.
"""
@doc false
defmacro __using__(opts) do
quote do
use Maru.Resource
use Maru.Builder.Pipeline
use Maru.Builder.Exception
use Maru.Builder.PlugRouter, unquote(opts)
use Maru.Builder.Description
use Maru.Builder.Parameter
use Maru.Response
import Maru.Helper.DSLs
@before_compile unquote(__MODULE__)
end
end
@doc false
defmacro __before_compile__(%Macro.Env{} = env) do
Maru.Resource.before_compile_router(env)
Maru.Builder.Exception.before_compile_router(env)
Maru.Builder.PlugRouter.before_compile_router(env)
end
end