Callbackex v0.1.1 Callbackex

Define a Callbackex

A callbackex is used to define, organize and invoke callbacks

Example

defmodule UserProcessor do
  # Use Callbackex
  use Callbackex, :before_create, :after_create

  # Define callbacks
  callbacks do
    before_create :check_ip
    before_create User.ValidateName, limit: 10
    after_create Indexer, index: :user
    after_create AuditLog, operation: :create
  end

  # Use callbacks
  def create(params) do
    with {:ok, params} <- invoke_callback(:before_create, params),
         {:ok, user} <- do_create_user(params),
         {:ok, user} <- invoke_callback(:after_create, user) do
      {:ok, user}
    end
  end
end

Reflection

Any callbackex module will generate the callbackex function that can be used for runtime introspection of the callbacks

  • __callbackex__(:callbacks) - Returns the callback names defined
  • __callbackex__(:callback, callback) - Returns the callback call corresponding to given callback

Summary

Functions

do_invoke_callback(module, callback, value)
do_invoke_callback(module, atom, any) :: Callbackex.Context.t

Macros

callbacks(list)
callbacks(term, Macro.t) :: Macro.t