Packages
mazurka
0.3.27
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/input.ex
defmodule Mazurka.Resource.Input do
@doc false
def format(ast, type \\ :prop) do
Mazurka.Compiler.Utils.postwalk(ast, fn
({{:., _, [{:__aliases__, _, [:Input]}, :get]}, _, []}) ->
get(type)
({{:., _, [input, :get]}, _, []}) when input in [:Input, Elixir.Input, __MODULE__] ->
get(type)
({{:., _, [{:__aliases__, _, [:Input]}, :get]}, _, [name]}) ->
get(name, type)
({{:., _, [input, :get]}, _, [name]}) when input in [:Input, Elixir.Input, __MODULE__] ->
get(name, type)
(other) ->
other
end)
end
defp get(:prop) do
{:etude_prop, [], [:query]}
end
defp get(:conn) do
quote do
^^Mazurka.Resource.Input.get()
end
end
defp get(name, :prop) do
quote do
^Mazurka.Runtime.get_param(unquote(get(:prop)), unquote(name))
end
end
defp get(name, :conn) do
quote do
^^Mazurka.Resource.Input.get(unquote(name))
end
end
@doc false
def get([], conn, _, _, _) do
conn = Plug.Conn.fetch_query_params(conn)
{:ok, conn.params, conn}
end
def get([name], conn, _, _, _) do
conn = Plug.Conn.fetch_query_params(conn)
value = Dict.get(conn.params, name)
normalized = if value == nil, do: :undefined, else: value
{:ok, normalized, conn}
end
end