Sha256: c30b020c37bbb09c1218ef58eead536513f6b2a80cf2a9d7bba8a08944c9619c

Contents?: true

Size: 1.14 KB

Versions: 111

Compression:

Stored size: 1.14 KB

Contents

module WebSocket
  class Driver

    module EventEmitter
      def initialize
        @listeners = Hash.new { |h,k| h[k] = [] }
      end

      def add_listener(event, callable = nil, &block)
        listener = callable || block
        @listeners[event.to_s] << listener
        listener
      end

      def on(event, callable = nil, &block)
        if callable
          add_listener(event, callable)
        else
          add_listener(event, &block)
        end
      end

      def remove_listener(event, callable = nil, &block)
        listener = callable || block
        @listeners[event.to_s].delete(listener)
        listener
      end

      def remove_all_listeners(event = nil)
        if event
          @listeners.delete(event.to_s)
        else
          @listeners.clear
        end
      end

      def emit(event, *args)
        @listeners[event.to_s].dup.each do |listener|
          listener.call(*args)
        end
      end

      def listener_count(event)
        return 0 unless @listeners.has_key?(event.to_s)
        @listeners[event.to_s].size
      end

      def listeners(event)
        @listeners[event.to_s]
      end
    end

  end
end

Version data entries

111 entries across 82 versions & 18 rubygems

Version Path
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.7-java lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.7 lib/websocket/driver/event_emitter.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
tinymce-rails-7.1.2 vendor/bundle/ruby/3.3.0/gems/websocket-driver-0.7.6/lib/websocket/driver/event_emitter.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/websocket-driver-0.7.5/lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.6-java lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.6 lib/websocket/driver/event_emitter.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/websocket-driver-0.7.5/lib/websocket/driver/event_emitter.rb
date_n_time_picker_activeadmin-0.1.2 vendor/bundle/ruby/2.6.0/gems/websocket-driver-0.7.5/lib/websocket/driver/event_emitter.rb
date_n_time_picker_activeadmin-0.1.1 vendor/bundle/ruby/2.6.0/gems/websocket-driver-0.7.5/lib/websocket/driver/event_emitter.rb
rails_mini_profiler-0.2.0 vendor/bundle/ruby/3.0.0/gems/websocket-driver-0.7.5/lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.5-java lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.5 lib/websocket/driver/event_emitter.rb
websocket-driver-0.7.4-java lib/websocket/driver/event_emitter.rb