Sha256: a53578462326bb7f12ca41cb347c201f0caa1b14621724d8355ce8b6fec350a3
Contents?: true
Size: 792 Bytes
Versions: 2
Compression:
Stored size: 792 Bytes
Contents
module Space module Events autoload :Buffer, 'space/events/buffer' autoload :Event, 'space/events/event' attr_reader :buffer def buffering @buffer = Buffer.new yield.tap do buffer, @buffer = @buffer, nil buffer.flush end end def buffering? !!@buffer end def observers @observers ||= [] end def subscribe(observer) observers << observer end def notify(*args) event = args.first.is_a?(Event) ? args.first : Event.new(self, *args) App.logger.debug "Event on #{self.class.name.split('::').last}: #{event.source.class.name.split('::').last} #{event.event.inspect}" buffering? ? buffer.push(event) : observers.each { |observer| observer.notify(event) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
space-0.0.5 | lib/space/events.rb |
space-0.0.4 | lib/space/events.rb |