# OK Elixir

**Effecient error handling in elixir pipelines. See [Handling Errors in Elixir]( for a more detailed explination**

[Documentation for OK is available on hexdoc](

## Installation

[Available in Hex](, the package can be installed as:

  1. Add ok to your list of dependencies in `mix.exs`:

        def deps do
          [{:ok, "~> 0.0.1"}]

## Usage

The OK module works with the native error handling in Erlang/Elixir, that is a result tuple.
A result tuple is a two-tuple tagged either as a success(`:ok`) or a failure(`:error`).

{:ok, value} | {:error, reason}

### '~>>' Macro

This macro allows pipelining results through a pipeline of anonymous functions.

import OK, only: :macros

def get_employee_data(file, name) do
  {:ok, file}
  ~>> &
  ~>> &Poison.decode/1
  ~>> &Dict.fetch(&1, name)

def handle_user_data({:ok, data}), do: IO.puts("Contact at #{data["email"]}")
def handle_user_data({:error, :enoent}), do: IO.puts("File not found")
def handle_user_data({:error, {:invalid, _}}), do: IO.puts("Invalid JSON")
def handle_user_data({:error, :key_not_found}), do: IO.puts("Could not find employee")

|> handle_user_data