module RbEvent
Constants
- VERSION
Public Instance Methods
listen(name, listener=nil, &listener_block)
click to toggle source
Adds an event listener
listener βorβ listener_block required.
@param [#to_sym] name the name of event @param [#call] listener @return [#call] The listener added
@raise [ArgumentError]
# File lib/rb_event.rb, line 13 def listen(name, listener=nil, &listener_block) if listener.nil? && listener_block.nil? raise ArgumentError, "listener is nil and block is not given" elsif !listener.nil? && !listener_block.nil? raise ArgumentError, "Both listener and block is given" end if !listener.nil? && !listener.respond_to?(:call) raise ArgumentError, "Invalid listener: #{listener.inspect} not responded to :call" end listener ||= listener_block name = name.to_sym unless rb_event_listeners.key?(name) rb_event_listeners[name] = [] end rb_event_listeners[name] << listener listener end
Also aliased as: add_listener
listen?(name, listener)
click to toggle source
Check the listener is added
@param [#to_sym] name The name of event @param [#call] listener @return [Boolean]
# File lib/rb_event.rb, line 55 def listen?(name, listener) name = name.to_sym return false unless rb_event_listeners.key?(name) rb_event_listeners[name].include? listener end
Also aliased as: has_listener?
unlisten(name, listener)
click to toggle source
Removes an event listener
@param [#to_sym] name The name of event @param [#call] listener @return [void]
# File lib/rb_event.rb, line 39 def unlisten(name, listener) name = name.to_sym return nil unless rb_event_listeners.key?(name) rb_event_listeners[name].delete listener if rb_event_listeners[name].empty? rb_event_listeners.delete(name) end nil end
Also aliased as: remove_listener
Protected Instance Methods
fire_event(name, *args)
click to toggle source
Calls listeners @param [#to_sym] name @param [Array] args
# File lib/rb_event.rb, line 74 def fire_event(name, *args) name = name.to_sym return nil unless rb_event_listeners.key?(name) rb_event_listeners[name].each { |e| e.call(*args) } nil end
Private Instance Methods
rb_event_listeners()
click to toggle source
Gets event listeners @return [Hash] @note
# File lib/rb_event.rb, line 66
def rb_event_listeners
@rb_event_listeners ||= Hash.new
end