class Cadence::Workflow::Dispatcher

Constants

WILDCARD

Attributes

handlers[R]

Public Class Methods

new() click to toggle source
# File lib/cadence/workflow/dispatcher.rb, line 6
def initialize
  @handlers = Hash.new { |hash, key| hash[key] = [] }
end

Public Instance Methods

dispatch(target, event_name, args = nil) click to toggle source
# File lib/cadence/workflow/dispatcher.rb, line 14
def dispatch(target, event_name, args = nil)
  handlers_for(target, event_name).each do |handler|
    handler.call(*args)
  end
end
register_handler(target, event_name, &handler) click to toggle source
# File lib/cadence/workflow/dispatcher.rb, line 10
def register_handler(target, event_name, &handler)
  handlers[target] << [event_name, handler]
end

Private Instance Methods

handlers_for(target, event_name) click to toggle source
# File lib/cadence/workflow/dispatcher.rb, line 24
def handlers_for(target, event_name)
  handlers[target]
    .select { |(name, _)| name == event_name || name == WILDCARD }
    .map(&:last)
end