module EasyCallbacks

Constants

VERSION

Attributes

target_classes_repository[W]

Public Class Methods

after(target_method_name, callback_method_name=nil, &callback_block) click to toggle source
# File lib/easy_callbacks.rb, line 18
def after(target_method_name, callback_method_name=nil, &callback_block)
  handle_callback_definition :after, target_method_name, callback_method_name, &callback_block
end
around(target_method_name, callback_method_name=nil, &callback_block) click to toggle source
# File lib/easy_callbacks.rb, line 14
def around(target_method_name, callback_method_name=nil, &callback_block)
  handle_callback_definition :around, target_method_name, callback_method_name, &callback_block
end
before(target_method_name, callback_method_name=nil, &callback_block) click to toggle source
# File lib/easy_callbacks.rb, line 10
def before(target_method_name, callback_method_name=nil, &callback_block)
  handle_callback_definition :before, target_method_name, callback_method_name, &callback_block
end
configure(target_class, &cfg_block) click to toggle source
# File lib/easy_callbacks.rb, line 34
def configure(target_class, &cfg_block)
  target_class_instance = target_classes_repository.find_or_add target_class
  Dsls::TargetClassesDsl.new(target_class_instance).instance_eval &cfg_block
end
define_callback_details_method(additional_options, callback, target_class_instance) click to toggle source
# File lib/easy_callbacks.rb, line 48
def define_callback_details_method(additional_options, callback, target_class_instance)
  target_class_instance.target_class.send :define_method, :callback_details do
    callback_details = Utils::Serializer.to_h(
      callback, %w(callback_type target_method_name callback_method_name callback_block)
    ).merge(target_class: target_class_instance.target_class)
    additional_options ? callback_details.merge(additional_options) : callback_details
  end
end
execute_callbacks(context, target_class_instance, callback_type, target_method_name, additional_options, call_args, &call_block) click to toggle source
# File lib/easy_callbacks.rb, line 39
def execute_callbacks(context, target_class_instance, callback_type, target_method_name, additional_options, call_args, &call_block)
  validate_target_class_instance target_class_instance
  target_class_instance.get_callbacks_for(callback_type, target_method_name).each do |callback|
    define_callback_details_method additional_options, callback, target_class_instance
    proc = callback.callback_block
    proc.nil? ? context.send(callback.callback_method_name, *call_args, &call_block) : context.instance_eval(&proc)
  end
end
handle_callback_definition(callback_type, target_method_name, callback_method_name, &callback_block) click to toggle source
# File lib/easy_callbacks.rb, line 22
def handle_callback_definition(callback_type, target_method_name, callback_method_name, &callback_block)
  EasyCallbacks.configure(self) { send callback_type, target_method_name, callback_method_name, &callback_block }
end

Protected Class Methods

target_classes_repository() click to toggle source
# File lib/easy_callbacks.rb, line 63
def target_classes_repository
  @target_classes_repository ||= Repositories::TargetClassesRepository.new
end
validate_target_class_instance(target_class_instance) click to toggle source
# File lib/easy_callbacks.rb, line 59
def validate_target_class_instance(target_class_instance)
  Utils::Validator.validate_instance_type! :target_class_instance, target_class_instance, Models::TargetClass
end