Sha256: 9356a6ceab9fb56e3c70ce4667ce77273e79f3fade1a1dab982267d6a8e54963
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
module Yoda class Server class SignatureProvider attr_reader :client_info # @param client_info [ClientInfo] def initialize(client_info) @client_info = client_info end # @param uri [String] # @param position [{Symbol => Integer}] def provide(uri, position) source = client_info.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(client_info.registry, cut_source, location) functions = signature_worker.method_candidates create_signature_help(functions) end # @param code_objects [Array<Model::FunctionSignatures::Base>] def create_signature_help(functions) signatures = functions.map { |func| Model::Descriptions::FunctionDescription.new(func) } LSP::Interface::SignatureHelp.new( signatures: signatures.map { |signature| create_signature_info(signature) }, ) end # @param signature [Evaluation::Descriptions::FunctionDescription] def create_signature_info(signature) LSP::Interface::SignatureInformation.new( label: signature.title.to_s, documentation: signature.to_markdown, parameters: signature.parameter_names.map do |parameter| LSP::Interface::ParameterInformation.new( label: parameter, ) end, ) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
yoda-language-server-0.4.0 | lib/yoda/server/signature_provider.rb |