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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
module LanguageServer
module Protocol
module Interface
class Diagnostic
def initialize(range:, severity: nil, code: nil, code_description: nil, source: nil, message:, tags: nil, related_information: nil, data: nil)
@attributes = {}
@attributes[:range] = range
@attributes[:severity] = severity if severity
@attributes[:code] = code if code
@attributes[:codeDescription] = code_description if code_description
@attributes[:source] = source if source
@attributes[:message] = message
@attributes[:tags] = tags if tags
@attributes[:relatedInformation] = related_information if related_information
@attributes[:data] = data if data
@attributes.freeze
end
#
# The range at which the message applies.
#
# @return [Range]
def range
attributes.fetch(:range)
end
#
# The diagnostic's severity. Can be omitted. If omitted it is up to the
# client to interpret diagnostics as error, warning, info or hint.
#
# @return [DiagnosticSeverity]
def severity
attributes.fetch(:severity)
end
#
# The diagnostic's code, which might appear in the user interface.
#
# @return [string | number]
def code
attributes.fetch(:code)
end
#
# An optional property to describe the error code.
#
# @return [CodeDescription]
def code_description
attributes.fetch(:codeDescription)
end
#
# A human-readable string describing the source of this
# diagnostic, e.g. 'typescript' or 'super lint'.
#
# @return [string]
def source
attributes.fetch(:source)
end
#
# The diagnostic's message.
#
# @return [string]
def message
attributes.fetch(:message)
end
#
# Additional metadata about the diagnostic.
#
# @return [DiagnosticTag[]]
def tags
attributes.fetch(:tags)
end
#
# An array of related diagnostic information, e.g. when symbol-names within
# a scope collide all definitions can be marked via this property.
#
# @return [DiagnosticRelatedInformation[]]
def related_information
attributes.fetch(:relatedInformation)
end
#
# A data entry field that is preserved between a
# `textDocument/publishDiagnostics` notification and
# `textDocument/codeAction` request.
#
# @return [unknown]
def data
attributes.fetch(:data)
end
attr_reader :attributes
def to_hash
attributes
end
def to_json(*args)
to_hash.to_json(*args)
end
end
end
end
end
|