class IRuby::EventManager
Attributes
Public Class Methods
Source
# File lib/iruby/event_manager.rb, line 3 def initialize(available_events) @available_events = available_events.dup.freeze @callbacks = available_events.map {|n| [n, []] }.to_h end
Public Instance Methods
Source
# File lib/iruby/event_manager.rb, line 10 def register(event, &block) check_available_event(event) @callbacks[event] << block unless block.nil? block end
Source
# File lib/iruby/event_manager.rb, line 26 def trigger(event, *args, **kwargs) check_available_event(event) @callbacks[event].each do |fn| fn.call(*args, **kwargs) end end
Source
# File lib/iruby/event_manager.rb, line 16 def unregister(event, callback) check_available_event(event) val = @callbacks[event].delete(callback) unless val raise ArgumentError, "Given callable object #{callback} is not registered as a #{event} callback" end val end
Private Instance Methods
Source
# File lib/iruby/event_manager.rb, line 35 def check_available_event(event) return if @callbacks.key?(event) raise ArgumentError, "Unknown event name: #{event}", caller end