Module: EventSpitter
- Defined in:
- lib/event_spitter.rb,
lib/event_spitter/version.rb
Constant Summary collapse
- VERSION =
"0.5.0"
Instance Method Summary collapse
-
#emit(event_name, *args) ⇒ Object
Public: Executes the listeners for an event.
-
#events ⇒ Object
Internal: The list of events.
-
#listeners(event_name) ⇒ Object
Public: An Array of listeners for an event.
-
#off(event_name, listener) ⇒ Object
(also: #remove_listener)
Public: Remove a listener for an event.
-
#on(event_name, listener) ⇒ Object
(also: #add_listener)
Public: Add a listener for an event.
-
#once(event_name, listener) ⇒ Object
Public: Adds a one time listener for the event.
-
#remove_all_listeners(*event_names) ⇒ Object
Public: Remove all listeners for event names.
Instance Method Details
#emit(event_name, *args) ⇒ Object
Public: Executes the listeners for an event.
event_name - The String event name. args - Zero or more argument to be passed to the listeners.
Examples
emitter.emit('connection', 'hello world!')
Returns nothing.
73 74 75 76 77 |
# File 'lib/event_spitter.rb', line 73 def emit(event_name, *args) events.fetch(event_name, []).each do |listener| listener.call(*args) end end |
#events ⇒ Object
Internal: The list of events.
Returns a Hash of events and their listeners.
102 103 104 |
# File 'lib/event_spitter.rb', line 102 def events @events ||= {} end |
#listeners(event_name) ⇒ Object
Public: An Array of listeners for an event.
Returns event listeners Array.
59 60 61 |
# File 'lib/event_spitter.rb', line 59 def listeners(event_name) events[event_name] end |
#off(event_name, listener) ⇒ Object Also known as: remove_listener
Public: Remove a listener for an event.
event_name - The String name of the event. listener - The Proc listener on the event.
Examples
emitter.off('connection', listener)
Returns nothing.
31 32 33 |
# File 'lib/event_spitter.rb', line 31 def off(event_name, listener) Array(events[event_name]).delete(listener) end |
#on(event_name, listener) ⇒ Object Also known as: add_listener
Public: Add a listener for an event.
event_name - The String name of the event. listener - The Proc listener for the event.
Examples
listener = ->(msg) { puts(msg) }
emitter.on('connection', listener)
Returns nothing.
16 17 18 |
# File 'lib/event_spitter.rb', line 16 def on(event_name, listener) events[event_name] = Array(events[event_name]) << listener end |
#once(event_name, listener) ⇒ Object
Public: Adds a one time listener for the event.
event_name - The String name of the event. listener - The Proc listener for the event.
Examples
listener = ->(msg) { puts(msg) }
emitter.once('connection', listener)
Returns nothing.
47 48 49 50 51 52 53 54 |
# File 'lib/event_spitter.rb', line 47 def once(event_name, listener) new_listener = ->(*args) do listener.call(*args) off(event_name, new_listener) end on(event_name, new_listener) end |
#remove_all_listeners(*event_names) ⇒ Object
Public: Remove all listeners for event names. If zero event names as supplied then all event listeners are removed.
event_names - Zero or more String event names.
Examples
emitter.remove_all_listeners
emitter.remove_all_listeners('connection')
Returns nothing.
91 92 93 94 95 96 97 |
# File 'lib/event_spitter.rb', line 91 def remove_all_listeners(*event_names) if event_names.any? event_names.each { |key| events.delete(key) } else events.clear end end |