module Firstclasspostcodes::Events

Public Instance Methods

emit(event_name, *args) click to toggle source
# File lib/firstclasspostcodes/events.rb, line 19
def emit(event_name, *args)
  events[event_name.to_sym]&.each { |handler| handler.call(*args) }
end
events() click to toggle source
# File lib/firstclasspostcodes/events.rb, line 23
def events
  @events ||= {}
end
off(event_name, handler_id) click to toggle source
# 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) click to toggle source
# 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