Skip to content
/ scope Public

Scope is a small module that provides two macros to facilitate function overload and local import/aliases execution.

License

Notifications You must be signed in to change notification settings

xvw/scope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scope

Scope is a small module that provides two macros to facilitate function overload and local import/aliases execution.

Overload functions

import Scope 
overload [+: 2, -: 2], from: Kernel, with: Test
1 + 3 - 2 # gives [2, [1, 3]]

Local importation

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

Installation

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.

About

Scope is a small module that provides two macros to facilitate function overload and local import/aliases execution.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages