this repo has no description
www.jonmsterling.com/01HC/
1// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers
2//
3// SPDX-License-Identifier: MPL-2.0
4
5import LanguageServerProtocol
6
7public struct Diagnostic: Equatable, Codable, Sendable {
8 public typealias Severity = LanguageServerProtocol.DiagnosticSeverity
9
10 public let message: String
11 public let severity: Severity
12 public let absoluteUtf16Range: Range<Int>
13
14 init(message: String, severity: Severity, absoluteRange: Range<Int>) {
15 self.message = message
16 self.severity = severity
17 self.absoluteUtf16Range = absoluteRange
18 }
19
20 init(message: String, absoluteRange: Range<Int>) {
21 self.init(message: message, severity: Severity.error, absoluteRange: absoluteRange)
22 }
23
24 func lspRange(lineMap: LineMap) -> LanguageServerProtocol.LSPRange {
25 let start = lineMap.location(at: absoluteUtf16Range.lowerBound)
26 let end = lineMap.location(at: absoluteUtf16Range.upperBound)
27 return LSPRange(
28 start: Position(line: start.line, character: start.column),
29 end: Position(line: end.line, character: end.column)
30 )
31 }
32
33 public func lspDiagnostic(lineMap: LineMap) -> LanguageServerProtocol.Diagnostic {
34 LanguageServerProtocol.Diagnostic(
35 range: lspRange(lineMap: lineMap),
36 severity: severity,
37 message: message
38 )
39 }
40}