append_callback(event, callable = nil, &block)
clear_callbacks(event)
click to toggle source
def clear_callbacks(event)
@callbacks[event].clear if @callbacks[event]
end
define_callback(event, callable = nil, &block)
click to toggle source
def define_callback(event, callable = nil, &block)
f = (callable || block)
@callbacks[event] ||= []
@callbacks[event] << f if f
self
end
exec_callback(name, *args, &block)
click to toggle source
def exec_callback(name, *args, &block)
list = Array(@callbacks[name])
if list.any?
list.each { |c| c.call(*args, &block) }
end
end
exec_callback_once(name, *args, &block)
click to toggle source
def exec_callback_once(name, *args, &block)
list = (@callbacks.delete(name) || Array.new)
if list.any?
list.each { |c| c.call(*args, &block) }
end
end
exec_callback_once_yielding_self(name, *args, &block)
click to toggle source
def exec_callback_once_yielding_self(name, *args, &block)
list = (@callbacks.delete(name) || Array.new)
if list.any?
list.each { |c| c.call(self, *args, &block) }
end
end
exec_callback_yielding_self(name, *args, &block)
click to toggle source
def exec_callback_yielding_self(name, *args, &block)
list = Array(@callbacks[name])
if list.any?
list.each { |c| c.call(self, *args, &block) }
end
end
has_callback?(name)
click to toggle source
def has_callback?(name)
@callbacks[name] && !@callbacks[name].empty?
end
prepend_callback(event, &block)
click to toggle source
def prepend_callback(event, &block)
@callbacks[event] ||= []
@callbacks[event].unshift(block)
self
end
redefine_callback(event, callable = nil, &block)
click to toggle source
def redefine_callback(event, callable = nil, &block)
f = (callable || block)
@callbacks[event] = [f]
self
end