Model Support Function Extension
defmodule Nectar.ModelExtension do | |
defmacro include_method([do: block]) do | |
support_fn = Macro.escape(block) | |
quote bind_quoted: [support_fn: support_fn] do | |
Module.put_attribute(__MODULE__, :method_block, support_fn) | |
end | |
end | |
end | |
defmodule Nectar.ExtendProduct do | |
Module.register_attribute(__MODULE__, :method_block, accumulate: true) | |
import Nectar.ModelExtension | |
include_method do: (def fn_from_outside, do: "support function") | |
defmacro __before_compile__(_env) do | |
@method_block | |
end | |
end | |
defmodule Nectar.Product do | |
... | |
# Add new support function here | |
@before_compile Nectar.ExtendProduct | |
... | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment