From 785104bed3beba63b785eba91bc96d7a753ffdbc Mon Sep 17 00:00:00 2001 From: Greg Bolsinga Date: Sat, 15 Jun 2024 14:54:16 -0700 Subject: [PATCH] Use RegexBuilder Reference in Captures (#814) --- Sources/Site/Utility/String+LibrarySorting.swift | 10 ++++++---- Sources/Site/Utility/String+Markdown.swift | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Sources/Site/Utility/String+LibrarySorting.swift b/Sources/Site/Utility/String+LibrarySorting.swift index 34f9453c..ac16052e 100644 --- a/Sources/Site/Utility/String+LibrarySorting.swift +++ b/Sources/Site/Utility/String+LibrarySorting.swift @@ -27,11 +27,13 @@ extension String { } internal var removeCommonInitialPunctuation: String { - var result = self.removeCommonInitialWords + let result = self.removeCommonInitialWords + + let body = Reference(Substring.self) let regex = Regex { ZeroOrMore { .word.inverted } - Capture { + Capture(as: body) { OneOrMore { .word Optionally { @@ -42,8 +44,8 @@ extension String { ZeroOrMore { .word.inverted } } - if let match = result.wholeMatch(of: regex) { - result = String(match.output.1) + if let match = try? regex.wholeMatch(in: result) { + return String(match[body]) } return result } diff --git a/Sources/Site/Utility/String+Markdown.swift b/Sources/Site/Utility/String+Markdown.swift index 8012cd5e..b8ba79e7 100644 --- a/Sources/Site/Utility/String+Markdown.swift +++ b/Sources/Site/Utility/String+Markdown.swift @@ -13,15 +13,18 @@ extension String { // link // ---> // [link](url) + let url = Reference(Substring.self) + let link = Reference(Substring.self) + let regex = Regex { "" - Capture { + Capture(as: link) { ZeroOrMore(.reluctant) { .any } @@ -31,8 +34,7 @@ extension String { .anchorsMatchLineEndings() return self.replacing(regex) { match in - let (_, url, link) = match.output - return "[\(link)](\(url))" + return "[\(match[link])](\(match[url]))" } }