lib/ex_union.ex
defmodule ExUnion do
readme = "README.md"
@external_resource readme
@moduledoc ExUnion.Docs.massage_readme(readme, for: "ExUnion")
alias __MODULE__.Definition
defmacro defunion(ast) do
definition = Definition.build(ast, env: __CALLER__)
quote do
unquote(Definition.to_union(definition))
@spec __union__() :: ExUnion.Definition.t()
@__union__ unquote(Macro.escape(definition))
def __union__, do: @__union__
end
end
end