/screamer

Screamer-function definitions autogenerator

Primary LanguageElixir

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