exporter v0.1.0 Exporter
On the library side, you can specify functions and macros that the caller can use by default.
defmodule MyModule do
use Exporter, default: [a: 0, b: 1]
def a, do: "a"
def b(_), do: "b"
def c, do: "c"
end
defmodule MyApp do
use MyModule
a() # ok
b(1) # ok
c() # error
use MyModule, [c: 0]
a() # error
b(1) # error
c() # ok
end
# allow override
defmodule MyModule do
use Exporter, default: [a: 0, b: 1]
defmacro __using__(opt) do
ast = super(opt)
quote do
import Enum, only: [min: 1]
unquote(ast)
end
end
end