Module: RbEvent
- Defined in:
- lib/rb_event.rb
Constant Summary collapse
- VERSION =
'0.3.2'.freeze
Instance Method Summary collapse
-
#listen(name, listener = nil, &listener_block) ⇒ #call
(also: #add_listener)
Adds an event listener.
-
#listen?(name, listener) ⇒ Boolean
(also: #has_listener?)
Check the listener is added.
-
#unlisten(name, listener) ⇒ void
(also: #remove_listener)
Removes an event listener.
Instance Method Details
#listen(name, listener = nil, &listener_block) ⇒ #call Also known as: add_listener
Adds an event listener
listener ‘or’ listener_block required.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# 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 |
#listen?(name, listener) ⇒ Boolean Also known as: has_listener?
Check the listener is added
55 56 57 58 59 |
# 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 |
#unlisten(name, listener) ⇒ void Also known as: remove_listener
This method returns an undefined value.
Removes an event listener
39 40 41 42 43 44 45 46 47 |
# 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 |