module Miru::EventDispatcher

Public Instance Methods

add_event_listener(event_name, method) click to toggle source
# File lib/miru/event_dispatcher.rb, line 3
def add_event_listener(event_name, method)
  @event_listeners ||= {}
  @event_listeners[event_name] ||= []

  if @event_listeners[event_name].include?(method)
    raise StandardError.new("Listener already registered for event #{event_name}")        
  end
  
  @event_listeners[event_name] << method
end
dispatch_event(event_name, *args) click to toggle source
# File lib/miru/event_dispatcher.rb, line 22
def dispatch_event(event_name, *args)
  return unless @event_listeners && @event_listeners.has_key?(event_name)
  @event_listeners[event_name].each { |f| f.call(*args) }
end
remove_event_listener(event_name, method) click to toggle source
# File lib/miru/event_dispatcher.rb, line 14
def remove_event_listener(event_name, method)
  if @event_listeners.nil? || !@event_listeners.include?(event_name)
    raise StandardError.new("No listeners registered for event #{event_name}")
  end
  
  @event_listeners[event_name].delete(method)
end