forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCodeSuggestion.swift
More file actions
66 lines (59 loc) · 2.21 KB
/
CodeSuggestion.swift
File metadata and controls
66 lines (59 loc) · 2.21 KB
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
import CodableWrappers
import Foundation
public struct CodeSuggestion: Codable, Equatable {
public struct Description: Codable, Equatable {
public enum Kind: Codable, Equatable {
case warning
case action
}
public var kind: Kind
public var content: String
public init(kind: Kind, content: String) {
self.kind = kind
self.content = content
}
}
public init(
id: String,
text: String,
position: CursorPosition,
range: CursorRange,
replacingLines: [String] = [],
descriptions: [Description] = [],
middlewareComments: [String] = [],
metadata: [String: String] = [:]
) {
self.text = text
self.position = position
self.id = id
self.range = range
self.replacingLines = replacingLines
self.descriptions = descriptions
self.middlewareComments = middlewareComments
self.metadata = metadata
}
public static func == (lhs: CodeSuggestion, rhs: CodeSuggestion) -> Bool {
return lhs.text == rhs.text
&& lhs.position == rhs.position
&& lhs.id == rhs.id
&& lhs.range == rhs.range
&& lhs.descriptions == rhs.descriptions
&& lhs.middlewareComments == rhs.middlewareComments
}
/// The new code to be inserted and the original code on the first line.
public var text: String
/// The position of the cursor before generating the completion.
public var position: CursorPosition
/// An id.
public var id: String
/// The range of the original code that should be replaced.
public var range: CursorRange
/// Descriptions about this code suggestion
@FallbackDecoding<EmptyArray> public var replacingLines: [String]
/// Descriptions about this code suggestion
@FallbackDecoding<EmptyArray> public var descriptions: [Description]
/// A place to store comments inserted by middleware for debugging use.
@FallbackDecoding<EmptyArray> public var middlewareComments: [String]
/// A place to store extra data.
@FallbackDecoding<EmptyDictionary> public var metadata: [String: String]
}