Screamer-function definitions autogenerator
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
test
.gitignore
README.md
mix.exs
mix.lock

README.md

Screamer

Microlibrary, which adds special function definition macro def!, working like this:

  • The body of the function should be defined to raise errors in case of exceptional situations.
def MyModule
  use Screamer

  def! foo() do
    raise "error"
  end
end
  • The macro would automaticaly create two functions: with and without screamer:
iex> MyModule.__info__ :functions
[foo: 0, foo!: 0]
  • The logics of this functions is based on the Elixir contracts: screamed one raises error or return value, clear one return {:ok, value} or {:error, error}:
iex> MyModule.foo
{:error, %RuntimeError{message: "error"}}

iex> MyModule.foo!
** (RuntimeError) error

Installation

The package is available in Hex.

To install, add screamer to your list of dependencies in mix.exs:

def deps do
  [{:screamer, "~> 0.1.1"}]
end