aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Utility/FoundationExtensions.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Utility/FoundationExtensions.swift')
-rw-r--r--Hotline/Utility/FoundationExtensions.swift28
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)