module Emittr::Events::InstanceMethods
Public Instance Methods
emit(event, *payload)
click to toggle source
# 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)
click to toggle source
# File lib/emittr/events.rb, line 74 def listeners_for(event) listeners[event.to_sym].dup end
listeners_for_any()
click to toggle source
# File lib/emittr/events.rb, line 78 def listeners_for_any listeners[:*].dup end
off(event=nil, &block)
click to toggle source
# 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)
click to toggle source
# File lib/emittr/events.rb, line 52 def off_any(&block) raise_no_block_error unless block_given? off(:*, &block) end
on(event, &block)
click to toggle source
# 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)
click to toggle source
# File lib/emittr/events.rb, line 47 def on_any(&block) raise_no_block_error unless block_given? on(:*, &block) end
once(event, &block)
click to toggle source
# 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)
click to toggle source
# File lib/emittr/events.rb, line 57 def once_any(&block) raise_no_block_error unless block_given? once(:*, &block) end
Private Instance Methods
emit_any(event, *payload)
click to toggle source
# File lib/emittr/events.rb, line 88 def emit_any(event, *payload) any_listeners = listeners[:*] any_listeners.each { |l| l.call(event, *payload) } if any_listeners.any? end
listeners()
click to toggle source
# File lib/emittr/events.rb, line 84 def listeners @listeners ||= Hash.new { |h,k| h[k] = [] } end
raise_no_block_error()
click to toggle source
# File lib/emittr/events.rb, line 93 def raise_no_block_error raise ArgumentError, 'required block not passed' end