diff options
Diffstat (limited to 'Hotline/Utility/FoundationExtensions.swift')
| -rw-r--r-- | Hotline/Utility/FoundationExtensions.swift | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/Hotline/Utility/FoundationExtensions.swift b/Hotline/Utility/FoundationExtensions.swift index 9fc9ae7..b1cd1b9 100644 --- a/Hotline/Utility/FoundationExtensions.swift +++ b/Hotline/Utility/FoundationExtensions.swift @@ -7,27 +7,27 @@ enum Endianness { } extension String { - + func convertToAttributedStringWithLinks() -> AttributedString { let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: self) let matches = self.ranges(of: RegularExpressions.relaxedLink) for match in matches { let matchString = String(self[match]) if matchString.isEmailAddress() { - attributedString.addAttribute(.link, value: "mailto:\(matchString)", range: NSRange(match, in: self)) - } - else { + attributedString.addAttribute( + .link, value: "mailto:\(matchString)", range: NSRange(match, in: self)) + } else { attributedString.addAttribute(.link, value: matchString, range: NSRange(match, in: self)) } -// attributedString.addAttribute(.underlineStyle, value: 1, range: NSRange(match, in: self)) + // attributedString.addAttribute(.underlineStyle, value: 1, range: NSRange(match, in: self)) } return AttributedString(attributedString) } - + func isEmailAddress() -> Bool { self.wholeMatch(of: RegularExpressions.emailAddress) != nil } - + func isWebURL() -> Bool { guard let url = URL(string: self) else { return false @@ -39,12 +39,12 @@ extension String { return false } } - + func isImageURL() -> Bool { guard let url = URL(string: self) else { return false } - + switch url.pathExtension.lowercased() { case "jpg", "jpeg", "png", "gif": return true @@ -52,29 +52,27 @@ extension String { return false } } - + func convertingLinksToMarkdown() -> String { var cp = String(self) cp.replace(RegularExpressions.relaxedLink) { match -> String in let linkText = self[match.range] var injectedScheme = "https://" - if let _ = try? RegularExpressions.supportedLinkScheme.prefixMatch(in: linkText) { + if (try? RegularExpressions.supportedLinkScheme.prefixMatch(in: linkText)) != nil { injectedScheme = "" } - + return "[\(linkText)](\(injectedScheme)\(linkText))" } return cp } } - - extension Binding where Value: OptionSet, Value == Value.Element { func bindedValue(_ options: Value) -> Bool { return wrappedValue.contains(options) } - + func bind(_ options: Value) -> Binding<Bool> { return .init { () -> Bool in self.wrappedValue.contains(options) |