module EXEL::Events

Provides methods for registering and triggering event listeners

Constants

LISTENERS_KEY

Public Class Methods

included(other) click to toggle source
# File lib/exel/events.rb, line 16
def self.included(other)
  other.class_eval { attr_reader :context }
end

Public Instance Methods

register_listener(context, event, listener) click to toggle source
# File lib/exel/events.rb, line 8
def register_listener(context, event, listener)
  listeners_for_event(event, context) << listener
end
trigger(event, data = {}) click to toggle source
# File lib/exel/events.rb, line 12
def trigger(event, data = {})
  listeners_for_event(event, context).each { |listener| listener.send(event, context, data) }
end

Private Instance Methods

listeners(context) click to toggle source
# File lib/exel/events.rb, line 28
def listeners(context)
  context[LISTENERS_KEY] ||= Hash.new([])
end
listeners_for_event(event, context) click to toggle source
# File lib/exel/events.rb, line 22
def listeners_for_event(event, context)
  listeners(context).fetch(event)
rescue KeyError
  listeners(context)[event] = []
end