Module: Miru::EventDispatcher

Defined in:
lib/miru/event_dispatcher.rb

Instance Method Summary collapse

Instance Method Details

#add_event_listener(event_name, method) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# 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) ⇒ Object



22
23
24
25
# 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) ⇒ Object



14
15
16
17
18
19
20
# 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