Skip to content

Commit d93c90a

Browse files
committed
Fix that multi unicode scalar characters are not correctly handled in prompt to code
1 parent e726e32 commit d93c90a

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

Core/Sources/PromptToCodeService/OpenAIPromptToCodeService.swift

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,19 @@ extension OpenAIPromptToCodeService {
221221
func extractCodeAndDescription(from content: String)
222222
-> (code: String, description: String)
223223
{
224-
func extractCodeFromMarkdown(_ markdown: String) -> (code: String, endIndex: Int)? {
224+
func extractCodeFromMarkdown(
225+
_ markdown: String
226+
) -> (code: String, endIndex: String.Index)? {
225227
let codeBlockRegex = try! NSRegularExpression(
226228
pattern: #"```(?:\w+)?\R([\s\S]+?)\R```"#,
227229
options: .dotMatchesLineSeparators
228230
)
229231
let range = NSRange(markdown.startIndex..<markdown.endIndex, in: markdown)
230232
if let match = codeBlockRegex.firstMatch(in: markdown, options: [], range: range) {
231-
let codeBlockRange = Range(match.range(at: 1), in: markdown)!
232-
return (String(markdown[codeBlockRange]), match.range(at: 0).upperBound)
233+
guard let codeBlockRange = Range(match.range(at: 1), in: markdown),
234+
let endIndex = Range(match.range(at: 0), in: markdown)?.upperBound
235+
else { return nil }
236+
return (String(markdown[codeBlockRange]), endIndex)
233237
}
234238

235239
let incompleteCodeBlockRegex = try! NSRegularExpression(
@@ -242,8 +246,10 @@ extension OpenAIPromptToCodeService {
242246
options: [],
243247
range: range2
244248
) {
245-
let codeBlockRange = Range(match.range(at: 1), in: markdown)!
246-
return (String(markdown[codeBlockRange]), match.range(at: 0).upperBound)
249+
guard let codeBlockRange = Range(match.range(at: 1), in: markdown),
250+
let endIndex = Range(match.range(at: 0), in: markdown)?.upperBound
251+
else { return nil }
252+
return (String(markdown[codeBlockRange]), endIndex)
247253
}
248254
return nil
249255
}
@@ -252,8 +258,10 @@ extension OpenAIPromptToCodeService {
252258
return ("", "")
253259
}
254260

255-
func extractDescriptionFromMarkdown(_ markdown: String, startIndex: Int) -> String {
256-
let startIndex = markdown.index(markdown.startIndex, offsetBy: startIndex)
261+
func extractDescriptionFromMarkdown(
262+
_ markdown: String,
263+
startIndex: String.Index
264+
) -> String {
257265
guard startIndex < markdown.endIndex else { return "" }
258266
let range = startIndex..<markdown.endIndex
259267
let description = String(markdown[range])

Pro

Submodule Pro updated from 4d30bd2 to cabaf07

0 commit comments

Comments
 (0)