Current section

Files

Jump to
rewire lib rewire.ex
Raw

lib/rewire.ex

defmodule Rewire do
@moduledoc """
"""
defmacro __using__(_) do
quote do
# Module attribute to collect module's aliases.
Module.register_attribute(__MODULE__, :rewire_aliases, accumulate: false, persist: false)
# Hook to keep track of functions and their aliases.
@on_definition Rewire.Block
# Required for importing the `rewire` macro.
import Rewire
end
end
defmacro rewire(rewire_expr, opts, do: block) do
aliases = Module.get_attribute(__CALLER__.module, :rewire_aliases) || []
Rewire.Block.rewire_block(rewire_expr, opts, aliases, block)
end
defmacro rewire(rewire_expr, do: block) do
aliases = Module.get_attribute(__CALLER__.module, :rewire_aliases) || []
Rewire.Block.rewire_block(rewire_expr, [], aliases, block)
end
defdelegate rewire_module(mod, opts \\ []), to: Rewire.Module
end