Sha256: d1e11819770c8439b18e588a085c18afd52691ee59abc4c62db60bd72ef49a7c

Contents?: true

Size: 798 Bytes

Versions: 10

Compression:

Stored size: 798 Bytes

Contents

module Faye
  module Publisher
    
    def count_listeners(event_type)
      return 0 unless @subscribers and @subscribers[event_type]
      @subscribers[event_type].size
    end
    
    def bind(event_type, &listener)
      @subscribers ||= {}
      list = @subscribers[event_type] ||= []
      list << listener
    end
    
    def unbind(event_type, &listener)
      return unless @subscribers and @subscribers[event_type]
      return @subscribers.delete(event_type) unless listener
      
      @subscribers[event_type].delete_if(&listener.method(:==))
    end
    
    def trigger(event_type, *args)
      return unless @subscribers and @subscribers[event_type]
      listeners = @subscribers[event_type].dup
      listeners.each { |listener| listener.call(*args) }
    end
    
  end
end

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
faye-0.8.8 lib/faye/mixins/publisher.rb
faye-0.8.6 lib/faye/mixins/publisher.rb
faye-0.8.5 lib/faye/mixins/publisher.rb
faye-0.8.4 lib/faye/mixins/publisher.rb
faye-0.8.3 lib/faye/mixins/publisher.rb
faye-0.8.2 lib/faye/mixins/publisher.rb
_bushido-faye-0.8.2 lib/faye/mixins/publisher.rb
_bushido-faye-0.8.1 lib/faye/mixins/publisher.rb
bushido-faye-0.8.1 lib/faye/mixins/publisher.rb
faye-0.8.1 lib/faye/mixins/publisher.rb