lib/dispatch-rider/callbacks/storage.rb in dispatch-rider-1.4.2 vs lib/dispatch-rider/callbacks/storage.rb in dispatch-rider-1.5.0

- old
+ new

@@ -1,36 +1,46 @@ module DispatchRider module Callbacks + # Storage for callbacks. class Storage def initialize - @callbacks = {} + @callbacks = Hash.new { |storage, key| storage[key] = [] } end + # @param [Symbol] event name of the event + # @param [#call] block_param block passed as a parameter + # @param [Proc] &block def before(event, block_param = nil, &block) around(event) do |job, *args| (block_param || block).call(*args) job.call end end + # @param [Symbol] event name of the event + # @param [#call] block_param block passed as a parameter + # @param [Proc] &block def after(event, block_param = nil, &block) around(event) do |job, *args| begin job.call ensure (block_param || block).call(*args) end end end + # @param [Symbol] event name of the event + # @param [#call] block_param block passed as a parameter + # @param [Proc] &block def around(event, block_param = nil, &block) - @callbacks[event] ||= [] @callbacks[event] << (block_param || block) end + # @param [Symbol] event name of the event def for(event) - @callbacks[event] || [] + @callbacks[event] end end end end