class Yoda::Server::Providers::Signature
Public Class Methods
provider_method()
click to toggle source
# File lib/yoda/server/providers/signature.rb, line 5 def self.provider_method :'textDocument/signatureHelp' end
Public Instance Methods
provide(params)
click to toggle source
@param params [Hash]
# File lib/yoda/server/providers/signature.rb, line 10 def provide(params) calculate(params[:text_document][:uri], params[:position]) end
timeout()
click to toggle source
# File lib/yoda/server/providers/signature.rb, line 14 def timeout 10 end
Private Instance Methods
calculate(uri, position)
click to toggle source
@params uri [String] @params position [{Symbol => Integer}]
# File lib/yoda/server/providers/signature.rb, line 22 def calculate(uri, position) source = session.file_store.get(uri) location = Parsing::Location.of_language_server_protocol_position(line: position[:line], character: position[:character]) cut_source = Parsing::SourceCutter.new(source, location).error_recovered_source signature_worker = Evaluation::SignatureDiscovery.new(session.registry, cut_source, location) functions = signature_worker.method_candidates create_signature_help(functions) end
create_signature_help(functions)
click to toggle source
@param code_objects [Array<Model::FunctionSignatures::Base>]
# File lib/yoda/server/providers/signature.rb, line 34 def create_signature_help(functions) signatures = functions.map { |func| Model::Descriptions::FunctionDescription.new(func) } LanguageServer::Protocol::Interface::SignatureHelp.new( signatures: signatures.map { |signature| create_signature_info(signature) }, ) end
create_signature_info(signature)
click to toggle source
@param signature [Evaluation::Descriptions::FunctionDescription]
# File lib/yoda/server/providers/signature.rb, line 42 def create_signature_info(signature) LanguageServer::Protocol::Interface::SignatureInformation.new( label: signature.title.to_s, documentation: signature.to_markdown, parameters: signature.parameter_names.map do |parameter| LanguageServer::Protocol::Interface::ParameterInformation.new( label: parameter, ) end, ) end