class DispatchRider::Callbacks::Access

Provides access for invoking callbacks.

Attributes

callbacks[R]

Public Class Methods

new(callbacks) click to toggle source
# File lib/dispatch-rider/callbacks/access.rb, line 9
def initialize(callbacks)
  @callbacks = callbacks
end

Public Instance Methods

invoke(event, *args, &block) click to toggle source

Executes the passed block wrapped in the event’s callbacks. @param [Symbol] event @param [Array] args @param [Proc] block

# File lib/dispatch-rider/callbacks/access.rb, line 17
def invoke(event, *args, &block)
  stack_of_callbacks = callbacks.for(event).reverse

  block_with_callbacks = stack_of_callbacks.reduce(block) { |inner_block, outer_block|
    -> { outer_block.call(inner_block, *args) }
  }

  block_with_callbacks.call
end