module Slacks::Observer

Public Instance Methods

on(event, &block) click to toggle source
# File lib/slacks/observer.rb, line 7
def on(event, &block)
  observers_of(event).push(block)
end

Protected Instance Methods

observers() click to toggle source
# File lib/slacks/observer.rb, line 24
def observers
  return @observers if defined?(@observers)
  @observers = Concurrent::Hash.new { |hash, key| hash[key] = Concurrent::Array.new }
end
observers_of(event) click to toggle source
# File lib/slacks/observer.rb, line 20
def observers_of(event)
  observers[event.to_sym]
end
trigger(event, *args) click to toggle source
# File lib/slacks/observer.rb, line 13
def trigger(event, *args)
  raise ArgumentError, "Must specify an event to trigger" unless event
  observers_of(event).each do |block|
    block.call(*args)
  end
end