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 <> " !" endYou 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 endIf 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"}] endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/local.