Packages
mazurka
1.0.1
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.3.39
0.3.38
0.3.37
0.3.36
0.3.35
0.3.34
0.3.33
0.3.32
0.3.31
0.3.30
0.3.29
0.3.28
0.3.27
0.3.26
0.3.25
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
hypermedia api toolkit
Current section
Files
Jump to
Current section
Files
lib/mazurka/resource/param.ex
defmodule Mazurka.Resource.Param do
@moduledoc false
# expose the params getter
use Mazurka.Resource.Utils.Global, var: :params
use Mazurka.Resource.Utils
alias Mazurka.Resource.Utils.Scope
defmacro __using__(_) do
quote do
require unquote(__MODULE__)
alias unquote(__MODULE__), as: Params
import unquote(__MODULE__), only: [param: 1, param: 2]
defp mazurka__check_params(_) do
{[], []}
end
defoverridable mazurka__check_params: 1
end
end
@doc """
Define an expected parameter for the resource
param user
param user, User.get(&value)
param user do
User.get(&value)
end
"""
defmacro param(name, block \\ []) do
bin_name = elem(name, 0) |> to_string()
[
Scope.define(Utils.params, name, block),
quote do
defp mazurka__check_params(params) do
{missing, nil_params} = super(params)
case Map.fetch(params, unquote(bin_name)) do
:error ->
{[unquote(bin_name) | missing], nil_params}
{:ok, nil} ->
{missing, [unquote(bin_name) | nil_params]}
_ ->
{missing, nil_params}
end
end
defoverridable mazurka__check_params: 1
end
]
end
end