Rivet.Utils.Callbacks (rivet_utils v2.0.8)

View Source

Contributor: Brandon Gillespie

Summary

Functions

do_callback(callbacks, a, b)

@spec do_callback(%{callbacks: map()} | map(), atom(), term()) ::
  :error | {:ok, term()}
iex> do_callback(%{callbacks: nil}, nil, nil)
:error
iex> do_callback(%{callbacks: %{mine: fn _, x -> {:ok, x} end}}, :mine, :narf)
{:ok, :narf}
iex> do_callback(%{callbacks: %{not: fn _, x -> x end}}, :diff, :narf)
:error
iex> do_callback(nil, :diff, :narf)
:error

init_callbacks(list)

iex> %{red: func} = init_callbacks([:red])
%{red: func}
iex> init_callbacks(nil)
nil

put_callback(callbacks, key)

@spec put_callback(map(), atom()) :: map()
iex> %{thisone: func} = put_callback(%{}, :thisone)
...> is_function(func)
true

take_callbacks(map, only)

@spec take_callbacks(map(), list()) :: map()
iex> take_callbacks(%{callbacks: %{one: 1, two: 2}}, [:two])
%{two: 2}
iex> take_callbacks(%{callbacks: %{one: 1, two: 2}}, [])
nil