Module: Miru::EventDispatcher
- Defined in:
- lib/miru/event_dispatcher.rb
Instance Method Summary collapse
- #add_event_listener(event_name, method) ⇒ Object
- #dispatch_event(event_name, *args) ⇒ Object
- #remove_event_listener(event_name, method) ⇒ Object
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 |