Sha256: 7459387a6f26a0b2ef1eac14808c12b44f96f08071184c8046053a42c9d6a733

Contents?: true

Size: 1.16 KB

Versions: 12

Compression:

Stored size: 1.16 KB

Contents

# typed: strict
# frozen_string_literal: true

module RubyLsp
  # Listener is an abstract class to be used by requests for listening to events emitted when visiting an AST using the
  # EventEmitter.
  class Listener
    extend T::Sig
    extend T::Helpers
    extend T::Generic
    include Requests::Support::Common

    ResponseType = type_member

    abstract!

    sig { params(emitter: EventEmitter, message_queue: Thread::Queue).void }
    def initialize(emitter, message_queue)
      @emitter = emitter
      @message_queue = message_queue
    end

    class << self
      extend T::Sig

      sig { returns(T::Array[T.class_of(Listener)]) }
      def listeners
        @listeners ||= T.let([], T.nilable(T::Array[T.class_of(Listener)]))
      end

      sig { params(listener: T.class_of(Listener)).void }
      def add_listener(listener)
        listeners << listener
      end
    end

    # Override this method with an attr_reader that returns the response of your listener. The listener should
    # accumulate results in a @response variable and then provide the reader so that it is accessible
    sig { abstract.returns(ResponseType) }
    def response; end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
ruby-lsp-0.7.6 lib/ruby_lsp/listener.rb
ruby-lsp-0.7.5 lib/ruby_lsp/listener.rb
ruby-lsp-0.7.4 lib/ruby_lsp/listener.rb
ruby-lsp-0.7.3 lib/ruby_lsp/listener.rb
ruby-lsp-0.7.2 lib/ruby_lsp/listener.rb
ruby-lsp-0.7.1 lib/ruby_lsp/listener.rb
ruby-lsp-0.7.0 lib/ruby_lsp/listener.rb
ruby-lsp-0.6.2 lib/ruby_lsp/listener.rb
ruby-lsp-0.6.1 lib/ruby_lsp/listener.rb
ruby-lsp-0.6.0 lib/ruby_lsp/listener.rb
ruby-lsp-0.5.1 lib/ruby_lsp/listener.rb
ruby-lsp-0.5.0 lib/ruby_lsp/listener.rb