Module: CallbacksRb

Defined in:
lib/callbacks_rb.rb,
lib/callbacks_rb/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
'0.0.1'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/callbacks_rb.rb', line 4

def self.included(base)
  base.class_eval do
    attr_reader :callbacks

    extend ClassMethods
  end
end

Instance Method Details

#fire_callback(name, *args) ⇒ Object



35
36
37
38
39
# File 'lib/callbacks_rb.rb', line 35

def fire_callback(name, *args)
  name = name.to_sym
  return if !@callbacks || !@callbacks.key?(name)
  @callbacks[name].each { |callback| callback.call(*args) }
end

#register_callback(name, method = nil, &block) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/callbacks_rb.rb', line 24

def register_callback(name, method = nil, &block)
  init_callbacks_list unless @callbacks.present?
  name = name.to_sym
  if block_given?
    (@callbacks[name] ||= []) << block
  elsif method.present?
    (@callbacks[name] ||= []) << method
  end
  self
end

#register_callbacks(list) ⇒ Object



41
42
43
44
45
46
# File 'lib/callbacks_rb.rb', line 41

def register_callbacks(list)
  return if list.blank?
  list.each do |name, block|
    register_callback(name, block)
  end
end