aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Utility/FoundationExtensions.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2024-05-02 11:52:55 -0700
committerDustin Mierau <dustin@mierau.me>2024-05-02 11:52:55 -0700
commit480500a3e7cfe1e2aa8ff261ca6f9e522c3aaf4c (patch)
tree0a90a527da1ae9d2664277948328fba5d58de55f /Hotline/Utility/FoundationExtensions.swift
parent91569dd83bfe1e17b8f3b31334814132707de5a1 (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.swift21
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()