@@ -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] )
0 commit comments