Packages
mazurka
0.3.36
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/partial.ex
defmodule Mazurka.Resource.Partial do
defmacro partial(mediatype, {name, _, arguments}, [do: block]) do
Mazurka.Compiler.Utils.register(mediatype, __MODULE__, block, {name, arguments})
end
def format_name({name, _arguments}) do
name
end
def compile(_mediatype, block, globals, {_, arguments}) do
arguments = Enum.map(arguments, fn({arg, _, _} = var) ->
quote do
unquote(var) = ^Dict.get(prop(:params), unquote(arg |> to_string))
end
end)
quote do
unquote_splicing(arguments)
unquote_splicing(globals[:param] || [])
unquote_splicing(globals[:let] || [])
unquote(block)
end
|> Mazurka.Compiler.Utils.postwalk(fn(expr) ->
expr
|> Mazurka.Resource.Param.format(:prop)
|> Mazurka.Resource.Input.format(:prop)
|> Mazurka.Resource.Resource.format(:prop)
end)
end
end