Scope is a small module that provides two macros to facilitate function overload and local import/aliases execution.
import Scope
overload [+: 2, -: 2], from: Kernel, with: Test
1 + 3 - 2 # gives [2, [1, 3]]
You can just import one or more module :
import Scope
x = local System do
user_home <> " !"
end
# Or multiple module
y = local Elixir.{System, Path} do
absname(user_home())
end
# Or specifics function from a module
z = local [user_home: 0, user_home!: 0] in System do
user_home <> " !"
end
You can also directly use an expression:
import Scope
a = local (overload [+: 2, -: 2], from: Kernel, with: Test) do
1 + 2 - 3
end
b = 1 + 2 - 3
# a == [3, [1, 2]]
# b == 0
c = local (import Test) do
a = 1 + 2
b = 1 - 2
a - b
end
If available in Hex, the package can be installed
by adding scope
to your list of dependencies in mix.exs
:
def deps do
[{:scope, "~> 1.0.0"}]
end
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/local.