aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Utility/FoundationExtensions.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-07 12:44:55 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-07 12:44:55 -0800
commita55318fa8d643160900bec3e6b14e7404c63497a (patch)
treeab6a9eca9a368b35e1490becc70f94ebde6ac271 /Hotline/Utility/FoundationExtensions.swift
parent786a387d58fc66ae20716a9dee46b74dff8e6894 (diff)
Organize Library folder a bit. Update Tracker add/edit sheet design.
Diffstat (limited to 'Hotline/Utility/FoundationExtensions.swift')
-rw-r--r--Hotline/Utility/FoundationExtensions.swift107
1 files changed, 0 insertions, 107 deletions
diff --git a/Hotline/Utility/FoundationExtensions.swift b/Hotline/Utility/FoundationExtensions.swift
deleted file mode 100644
index 90a3032..0000000
--- a/Hotline/Utility/FoundationExtensions.swift
+++ /dev/null
@@ -1,107 +0,0 @@
-import Foundation
-import SwiftUI
-
-enum Endianness {
- case big
- case little
-}
-
-extension String {
-
- func markdownToAttributedString() -> AttributedString {
- let markdownText = self.convertingLinksToMarkdown()
- let attr = (try? AttributedString(markdown: markdownText, options: .init(interpretedSyntax: .inlineOnlyPreservingWhitespace))) ?? AttributedString(self)
-
- return attr
- }
-
- 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: matchString, 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
- }
- switch url.scheme?.lowercased() {
- case "http", "https":
- return true
- default:
- 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
- default:
- return false
- }
- }
-
- func convertingLinksToMarkdown() -> String {
-// var cp = String(self)
-
- self.replacing(RegularExpressions.relaxedLink) { match in
- let linkText = self[match.range]
-
- // Only add https:// if the link doesn't already have a scheme
- let hasScheme = (try? RegularExpressions.supportedLinkScheme.prefixMatch(in: linkText)) != nil
- let url = hasScheme ? String(linkText) : "https://\(linkText)"
-
- return "[\(linkText)](\(url))"
- }
-
-// cp.replace(RegularExpressions.relaxedLink) { match -> String in
-// let linkText = self[match.range]
-// var injectedScheme = "https://"
-// if let _ = try? RegularExpressions.supportedLinkScheme.prefixMatch(in: linkText) {
-// 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)
- } set: { newValue in
- if newValue {
- self.wrappedValue.insert(options)
- } else {
- self.wrappedValue.remove(options)
- }
- }
- }
-}