Class: Deftones::Core::Emitter
- Inherits:
-
Object
- Object
- Deftones::Core::Emitter
- Defined in:
- lib/deftones/core/emitter.rb
Instance Method Summary collapse
- #dispose ⇒ Object
- #emit(event_name, *arguments) ⇒ Object
-
#initialize ⇒ Emitter
constructor
A new instance of Emitter.
- #listeners(event_name) ⇒ Object
- #off(event_name, listener = nil) ⇒ Object
- #on(event_name, &block) ⇒ Object
- #once(event_name, &block) ⇒ Object
Constructor Details
#initialize ⇒ Emitter
Returns a new instance of Emitter.
6 7 8 |
# File 'lib/deftones/core/emitter.rb', line 6 def initialize @listeners = Hash.new { |hash, key| hash[key] = [] } end |
Instance Method Details
#dispose ⇒ Object
45 46 47 48 |
# File 'lib/deftones/core/emitter.rb', line 45 def dispose @listeners.clear self end |
#emit(event_name, *arguments) ⇒ Object
36 37 38 39 |
# File 'lib/deftones/core/emitter.rb', line 36 def emit(event_name, *arguments) @listeners[event_name.to_sym].dup.each { |listener| listener.call(*arguments) } self end |
#listeners(event_name) ⇒ Object
41 42 43 |
# File 'lib/deftones/core/emitter.rb', line 41 def listeners(event_name) @listeners[event_name.to_sym].dup end |
#off(event_name, listener = nil) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/deftones/core/emitter.rb', line 28 def off(event_name, listener = nil) key = event_name.to_sym return @listeners.delete(key) unless listener @listeners[key].delete(listener) self end |
#on(event_name, &block) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/deftones/core/emitter.rb', line 10 def on(event_name, &block) raise ArgumentError, "block is required" unless block @listeners[event_name.to_sym] << block self end |
#once(event_name, &block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/deftones/core/emitter.rb', line 17 def once(event_name, &block) raise ArgumentError, "block is required" unless block wrapper = nil wrapper = proc do |*arguments| off(event_name, wrapper) block.call(*arguments) end on(event_name, &wrapper) end |