diff options
| author | Dustin Mierau <dustin@mierau.me> | 2024-05-02 11:52:55 -0700 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2024-05-02 11:52:55 -0700 |
| commit | 480500a3e7cfe1e2aa8ff261ca6f9e522c3aaf4c (patch) | |
| tree | 0a90a527da1ae9d2664277948328fba5d58de55f /Hotline/Utility/FoundationExtensions.swift | |
| parent | 91569dd83bfe1e17b8f3b31334814132707de5a1 (diff) | |
Link highlighting in chat (with basic markdown support for bold, italtics, strikethrough, monospace/code). Remove some source files from iOS build.
Diffstat (limited to 'Hotline/Utility/FoundationExtensions.swift')
| -rw-r--r-- | Hotline/Utility/FoundationExtensions.swift | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Hotline/Utility/FoundationExtensions.swift b/Hotline/Utility/FoundationExtensions.swift index a1df815..f2cd39c 100644 --- a/Hotline/Utility/FoundationExtensions.swift +++ b/Hotline/Utility/FoundationExtensions.swift @@ -5,6 +5,27 @@ enum Endianness { case little } +extension String { + func isImageURL() -> Bool { + guard let url = URL(string: self) else { + return false + } + + let validImageExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "tiff", "webp"] + return validImageExtensions.contains(url.pathExtension.lowercased()) + } + + func convertLinksToMarkdown() -> String { + let urlPattern = #"https?://[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?"# + + guard let regex = try? NSRegularExpression(pattern: urlPattern, options: .caseInsensitive) else { + return self + } + + return regex.stringByReplacingMatches(in: self, range: NSRange(location: 0, length: self.count), withTemplate: "[$0]($0)") + } +} + extension Array where Element == UInt8 { init(_ val: UInt8) { self.init() |