Module: Emittr::Events::InstanceMethods
- Defined in:
- lib/emittr/events.rb
Instance Method Summary collapse
- #emit(event, *payload) ⇒ Object
- #listeners_for(event) ⇒ Object
- #listeners_for_any ⇒ Object
- #off(event = nil, &block) ⇒ Object
- #off_any(&block) ⇒ Object
- #on(event, &block) ⇒ Object
- #on_any(&block) ⇒ Object
- #once(event, &block) ⇒ Object
- #once_any(&block) ⇒ Object
Instance Method Details
#emit(event, *payload) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/emittr/events.rb', line 62 def emit(event, *payload) emit_any(event, *payload) return unless listeners.key? event listeners[event].each do |l| l.call(*payload) end self end |
#listeners_for(event) ⇒ Object
74 75 76 |
# File 'lib/emittr/events.rb', line 74 def listeners_for(event) listeners[event.to_sym].dup end |
#listeners_for_any ⇒ Object
78 79 80 |
# File 'lib/emittr/events.rb', line 78 def listeners_for_any listeners[:*].dup end |
#off(event = nil, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/emittr/events.rb', line 15 def off(event=nil, &block) unless event listeners.clear return self end if block_given? listeners[event].reject! { |l| l == block } else listeners.delete event end self end |
#off_any(&block) ⇒ Object
52 53 54 55 |
# File 'lib/emittr/events.rb', line 52 def off_any(&block) raise_no_block_error unless block_given? off(:*, &block) end |
#on(event, &block) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/emittr/events.rb', line 8 def on(event, &block) raise_no_block_error unless block_given? listeners[event.to_sym] << ::Emittr::Callback.new(&block) self end |
#on_any(&block) ⇒ Object
47 48 49 50 |
# File 'lib/emittr/events.rb', line 47 def on_any(&block) raise_no_block_error unless block_given? on(:*, &block) end |
#once(event, &block) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/emittr/events.rb', line 30 def once(event, &block) raise_no_block_error unless block_given? callback = ::Emittr::Callback.new &block off_block = Proc.new do |args| callback.call(*args) block_to_send = callback.wrapper || callback.callback off(event, &block_to_send) end callback.wrapper = off_block on(event, &off_block) end |
#once_any(&block) ⇒ Object
57 58 59 60 |
# File 'lib/emittr/events.rb', line 57 def once_any(&block) raise_no_block_error unless block_given? once(:*, &block) end |