1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
module LanguageServer
module Protocol
module Interface
#
# Represents the signature of something callable. A signature
# can have a label, like a function-name, a doc-comment, and
# a set of parameters.
#
class SignatureInformation
def initialize(label:, documentation: nil, parameters: nil, active_parameter: nil)
@attributes = {}
@attributes[:label] = label
@attributes[:documentation] = documentation if documentation
@attributes[:parameters] = parameters if parameters
@attributes[:activeParameter] = active_parameter if active_parameter
@attributes.freeze
end
#
# The label of this signature. Will be shown in
# the UI.
#
# @return [string]
def label
attributes.fetch(:label)
end
#
# The human-readable doc-comment of this signature. Will be shown
# in the UI but can be omitted.
#
# @return [string | MarkupContent]
def documentation
attributes.fetch(:documentation)
end
#
# The parameters of this signature.
#
# @return [ParameterInformation[]]
def parameters
attributes.fetch(:parameters)
end
#
# The index of the active parameter.
#
# If provided, this is used in place of `SignatureHelp.activeParameter`.
#
# @return [number]
def active_parameter
attributes.fetch(:activeParameter)
end
attr_reader :attributes
def to_hash
attributes
end
def to_json(*args)
to_hash.to_json(*args)
end
end
end
end
end
|