class Hanami::Utils::Callbacks::Factory

Callback factory

@since 0.1.0 @api private

Public Class Methods

fabricate(callback) click to toggle source

Instantiates a ‘Callback` according to if it responds to call.

@param callback [Object] the object that needs to be wrapped

@return [Callback, MethodCallback]

@since 0.1.0

@example

require 'hanami/utils/callbacks'

callable = Proc.new{} # it responds to #call
method   = :upcase    # it doesn't responds to #call

Hanami::Utils::Callbacks::Factory.fabricate(callable).class
  # => Hanami::Utils::Callbacks::Callback

Hanami::Utils::Callbacks::Factory.fabricate(method).class
  # => Hanami::Utils::Callbacks::MethodCallback
# File lib/hanami/utils/callbacks.rb, line 226
def self.fabricate(callback)
  if callback.respond_to?(:call)
    Callback.new(callback)
  else
    MethodCallback.new(callback)
  end
end