Sha256: 08369de7e9d2dc9d15d8ac93df83a6960f3e4ddd52cf18d0540ea52144da50da
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module Wisper module Publisher def listeners registrations.map(&:listener).freeze end def add_listener(listener, options = {}) local_registrations << ObjectRegistration.new(listener, options) self end alias :subscribe :add_listener def add_block_listener(options = {}, &block) local_registrations << BlockRegistration.new(block, options) self end # sugar def respond_to(event, &block) add_block_listener({:on => event}, &block) end alias :on :respond_to private def local_registrations @local_registrations ||= Set.new end def global_registrations GlobalListeners.registrations end def temporary_registrations TemporaryListeners.registrations end def registrations local_registrations + global_registrations + temporary_registrations end def broadcast(event, *args) registrations.each do | registration | registration.broadcast(clean_event(event), *args) end end alias :publish :broadcast alias :announce :broadcast def clean_event(event) event.to_s.gsub('-', '_') end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
wisper-1.1.0 | lib/wisper/publisher.rb |