Module: Firstclasspostcodes::Events

Included in:
Client
Defined in:
lib/firstclasspostcodes/events.rb

Instance Method Summary collapse

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

#eventsObject



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