Module: Firstclasspostcodes::Events
- Included in:
- Client
- Defined in:
- lib/firstclasspostcodes/events.rb
Instance Method Summary collapse
- #emit(event_name, *args) ⇒ Object
- #events ⇒ Object
- #off(event_name, handler_id) ⇒ Object
- #on(event_name, &handler) ⇒ Object
Instance Method Details
#emit(event_name, *args) ⇒ Object
19 20 21 |
# File 'lib/firstclasspostcodes/events.rb', line 19 def emit(event_name, *args) events[event_name.to_sym]&.each { |handler| handler.call(*args) } end |
#events ⇒ Object
23 24 25 |
# File 'lib/firstclasspostcodes/events.rb', line 23 def events @events ||= {} end |
#off(event_name, handler_id) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/firstclasspostcodes/events.rb', line 12 def off(event_name, handler_id) events[event_name.to_sym]&.filter! do |handler| handler.object_id != handler_id end handler_id end |
#on(event_name, &handler) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/firstclasspostcodes/events.rb', line 5 def on(event_name, &handler) event_symbol = event_name.to_sym events[event_symbol] ||= [] events[event_symbol].push(handler) handler.object_id end |