forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPromptToCodeProvider.swift
More file actions
81 lines (74 loc) · 2.76 KB
/
PromptToCodeProvider.swift
File metadata and controls
81 lines (74 loc) · 2.76 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import Foundation
import SwiftUI
public final class PromptToCodeProvider: ObservableObject {
let id = UUID()
@Published public var code: String
@Published public var language: String
@Published public var description: String
@Published public var isResponding: Bool
@Published public var startLineIndex: Int
@Published public var startLineColumn: Int
@Published public var requirement: String
@Published public var errorMessage: String
@Published public var canRevert: Bool
@Published public var isContinuous: Bool
public var onRevertTapped: () -> Void
public var onStopRespondingTap: () -> Void
public var onCancelTapped: () -> Void
public var onAcceptSuggestionTapped: () -> Void
public var onRequirementSent: (String) -> Void
public var onContinuousToggleClick: () -> Void
public init(
code: String = "",
language: String = "",
description: String = "",
isResponding: Bool = false,
startLineIndex: Int = 0,
startLineColumn: Int = 0,
requirement: String = "",
errorMessage: String = "",
canRevert: Bool = false,
isContinuous: Bool = false,
onRevertTapped: @escaping () -> Void = {},
onStopRespondingTap: @escaping () -> Void = {},
onCancelTapped: @escaping () -> Void = {},
onAcceptSuggestionTapped: @escaping () -> Void = {},
onRequirementSent: @escaping (String) -> Void = { _ in },
onContinuousToggleClick: @escaping () -> Void = {}
) {
self.code = code
self.language = language
self.description = description
self.isResponding = isResponding
self.startLineIndex = startLineIndex
self.startLineColumn = startLineColumn
self.requirement = requirement
self.errorMessage = errorMessage
self.canRevert = canRevert
self.isContinuous = isContinuous
self.onRevertTapped = onRevertTapped
self.onStopRespondingTap = onStopRespondingTap
self.onCancelTapped = onCancelTapped
self.onAcceptSuggestionTapped = onAcceptSuggestionTapped
self.onRequirementSent = onRequirementSent
self.onContinuousToggleClick = onContinuousToggleClick
}
func revert() {
onRevertTapped()
errorMessage = ""
}
func stopResponding() {
onStopRespondingTap()
errorMessage = ""
}
func cancel() { onCancelTapped() }
func sendRequirement() {
guard !isResponding else { return }
guard !requirement.isEmpty else { return }
onRequirementSent(requirement)
requirement = ""
errorMessage = ""
}
func acceptSuggestion() { onAcceptSuggestionTapped() }
func toggleContinuous() { onContinuousToggleClick() }
}