module RbEvent

Constants

VERSION

Public Instance Methods

add_listener(name, listener=nil, &listener_block)
Alias for: listen
has_listener?(name, listener)
Alias for: listen?
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?
remove_listener(name, listener)
Alias for: unlisten
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