Current section
Files
Jump to
Current section
Files
lib/json_rpc/method.ex
defmodule JSONRPC.Method do
defmacro __using__(_opts) do
quote do
import JSONRPC.Method
end
end
defmacro defmethod(module_name, arg_name, opts, do: block) do
pre =
opts
|> Keyword.get(:pre, [])
|> List.wrap()
|> Enum.map(fn
{processor, popts} -> quote do: process(unquote(processor), unquote(popts))
processor -> quote do: process(unquote(processor))
end)
post =
opts
|> Keyword.get(:post, [])
|> List.wrap()
|> Enum.map(fn
{processor, popts} -> quote do: process(unquote(processor), unquote(popts))
processor -> quote do: process(unquote(processor))
end)
quote do
defmodule unquote(module_name) do
use JSONRPC.ActionBuilder
unquote(pre)
method(unquote(arg_name), do: unquote(block))
unquote(post)
end
end
end
end