defmodule Schema do @doc false defmacro __using__(_) do quote do import Schema, only: [settings: 1] Module.register_attribute(__MODULE__, :es_analyses, accumulate: false) end end defmacro settings([do: block]) do quote do import Schema unquote(block) def es_analyses, do: @es_analyses end end # For just imitational function. defmacro analysis([do: block]), do: block defmacro analyzer(name, opts) when is_list(opts) do quote do Module.put_attribute(__MODULE__, :es_analyses, {:analyzer, :"#{unquote(name)}", unquote(opts)}) end end end