aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Utility')
-rw-r--r--Hotline/Utility/FoundationExtensions.swift34
-rw-r--r--Hotline/Utility/SwiftUIExtensions.swift26
2 files changed, 52 insertions, 8 deletions
diff --git a/Hotline/Utility/FoundationExtensions.swift b/Hotline/Utility/FoundationExtensions.swift
index 9fc9ae7..90a3032 100644
--- a/Hotline/Utility/FoundationExtensions.swift
+++ b/Hotline/Utility/FoundationExtensions.swift
@@ -8,6 +8,13 @@ enum Endianness {
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)
@@ -54,17 +61,28 @@ extension String {
}
func convertingLinksToMarkdown() -> String {
- var cp = String(self)
- cp.replace(RegularExpressions.relaxedLink) { match -> String in
+// var cp = String(self)
+
+ self.replacing(RegularExpressions.relaxedLink) { match in
let linkText = self[match.range]
- var injectedScheme = "https://"
- if let _ = try? RegularExpressions.supportedLinkScheme.prefixMatch(in: linkText) {
- injectedScheme = ""
- }
- return "[\(linkText)](\(injectedScheme)\(linkText))"
+ // 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))"
}
- return cp
+
+// 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
}
}
diff --git a/Hotline/Utility/SwiftUIExtensions.swift b/Hotline/Utility/SwiftUIExtensions.swift
index 3b850e0..12217b2 100644
--- a/Hotline/Utility/SwiftUIExtensions.swift
+++ b/Hotline/Utility/SwiftUIExtensions.swift
@@ -1,7 +1,33 @@
import SwiftUI
+import Foundation
extension Color {
init(hex: Int, opacity: Double = 1.0) {
self.init(red: Double((hex >> 16) & 0xFF) / 255.0, green: Double((hex >> 8) & 0xFF) / 255.0, blue: Double(hex & 0xFF) / 255.0, opacity: opacity)
}
}
+
+extension AttributedString {
+ func setHangingIndent(firstLineHeadIndent: CGFloat = 0, otherLinesHeadIndent: CGFloat) -> AttributedString {
+// var blah = self
+
+// guard var paragraph = self.paragraphStyle else {
+// return
+// }
+
+ var p = self.paragraphStyle?.mutableCopy() as? NSMutableParagraphStyle
+ p?.headIndent = otherLinesHeadIndent
+ p?.firstLineHeadIndent = firstLineHeadIndent
+
+// paragraph.headIndent = otherLinesHeadIndent // indent for lines 2+
+// paragraph.firstLineHeadIndent = firstLineHeadIndent // usually 0
+
+ var blah = self
+
+
+ blah.paragraphStyle = p
+
+ return blah
+ }
+}
+