class Yoda::Server::Providers::Hover
Public Class Methods
provider_method()
click to toggle source
# File lib/yoda/server/providers/hover.rb, line 5 def self.provider_method :'textDocument/hover' end
Public Instance Methods
provide(params)
click to toggle source
# File lib/yoda/server/providers/hover.rb, line 9 def provide(params) calculate(params[:text_document][:uri], params[:position]) end
timeout()
click to toggle source
# File lib/yoda/server/providers/hover.rb, line 13 def timeout 10 end
Private Instance Methods
calculate(uri, position)
click to toggle source
@param uri [String] @param position [{Symbol => Integer}]
# File lib/yoda/server/providers/hover.rb, line 21 def calculate(uri, position) source = session.file_store.get(uri) location = Parsing::Location.of_language_server_protocol_position(line: position[:line], character: position[:character]) node_worker = Evaluation::CurrentNodeExplain.new(session.registry, source, location) current_node_signature = node_worker.current_node_signature create_hover(current_node_signature) if current_node_signature end
create_hover(signature)
click to toggle source
@param signature [Evaluation::NodeSignature]
# File lib/yoda/server/providers/hover.rb, line 32 def create_hover(signature) LanguageServer::Protocol::Interface::Hover.new( contents: signature.descriptions.map { |value| create_hover_text(value) }, range: LanguageServer::Protocol::Interface::Range.new(signature.node_range.to_language_server_protocol_range), ) end
create_hover_text(description)
click to toggle source
@param description [Evaluation::Descriptions::Base] @return [String]
# File lib/yoda/server/providers/hover.rb, line 41 def create_hover_text(description) description.to_markdown end