module Cry

Constants

VERSION

Public Instance Methods

on(*events, &block) click to toggle source
# File lib/cry.rb, line 4
def on(*events, &block)
  raise ArgumentError, "must specify at least one event" unless events.any?
  events.each { |event| listeners_for(event) << block }
  self
end

Private Instance Methods

listeners() click to toggle source
# File lib/cry.rb, line 26
def listeners
  @listeners ||= {}
end
listeners_for(event) click to toggle source
# File lib/cry.rb, line 30
def listeners_for(event)
  listeners[event.to_sym] ||= []
end
publish(event, *args) click to toggle source
# File lib/cry.rb, line 14
def publish(event, *args)
  listeners_for(event).each do |listener|
    listener.call(*args)
  end
end
publish!(event, *args) click to toggle source
# File lib/cry.rb, line 20
def publish!(event, *args)
  raise NoListenersError, "nothing listening for #{event}" \
    unless listeners_for(event).any?
  publish(event, *args)
end