Class: Yoda::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/yoda/server.rb,
lib/yoda/server/session.rb,
lib/yoda/server/notifier.rb,
lib/yoda/server/providers.rb,
lib/yoda/server/file_store.rb,
lib/yoda/server/deserializer.rb,
lib/yoda/server/root_handler.rb,
lib/yoda/server/providers/base.rb,
lib/yoda/server/providers/hover.rb,
lib/yoda/server/concurrent_writer.rb,
lib/yoda/server/lifecycle_handler.rb,
lib/yoda/server/providers/signature.rb,
lib/yoda/server/providers/completion.rb,
lib/yoda/server/providers/definition.rb,
lib/yoda/server/providers/text_document_did_open.rb,
lib/yoda/server/providers/text_document_did_save.rb,
lib/yoda/server/providers/text_document_did_change.rb

Defined Under Namespace

Modules: Providers Classes: ConcurrentWriter, Deserializer, FileStore, LifecycleHandler, Notifier, RootHandler, Session

Constant Summary collapse

NO_RESPONSE =

Use this value as return value for notification handling

:no_response

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(reader: LanguageServer::Protocol::Transport::Stdio::Reader.new, writer: LanguageServer::Protocol::Transport::Stdio::Writer.new, root_handler_class: RootHandler) ⇒ Server

Returns a new instance of Server.



27
28
29
30
31
32
33
34
35
# File 'lib/yoda/server.rb', line 27

def initialize(
  reader: LanguageServer::Protocol::Transport::Stdio::Reader.new,
  writer: LanguageServer::Protocol::Transport::Stdio::Writer.new,
  root_handler_class: RootHandler
)
  @reader = reader
  @writer = ConcurrentWriter.new(writer)
  @root_handler = RootHandler.new(writer: @writer)
end

Instance Attribute Details

#reader::LanguageServer::Protocol::Transport::Stdio::Reader (readonly)

Returns:

  • (::LanguageServer::Protocol::Transport::Stdio::Reader)


16
17
18
# File 'lib/yoda/server.rb', line 16

def reader
  @reader
end

#root_handlerRootHandler (readonly)

Returns:



22
23
24
# File 'lib/yoda/server.rb', line 22

def root_handler
  @root_handler
end

#writerConcurrentWriter (readonly)

Returns:



19
20
21
# File 'lib/yoda/server.rb', line 19

def writer
  @writer
end

Instance Method Details

#deserialize(hash) ⇒ Object



48
49
50
# File 'lib/yoda/server.rb', line 48

def deserialize(hash)
  Deserializer.new.deserialize(hash || {})
end

#runObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/yoda/server.rb', line 37

def run
  reader.read do |request|
    begin
      root_handler.handle(id: request[:id], method: request[:method].to_sym, params: deserialize(request[:params]))
    rescue StandardError => ex
      Logger.warn ex
      Logger.warn ex.backtrace
    end
  end
end