From 0608996bb8a34dbbfeb19bf11c294f9bf5e78c7a Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Fri, 25 Nov 2022 10:03:42 +0100 Subject: [PATCH] Render Status as Markdown --- .../xcshareddata/swiftpm/Package.resolved | 14 ++++++++++++++ Packages/Network/Package.swift | 5 ++++- .../Sources/Network/ModelsExt/StatusExt.swift | 13 +++++++++++++ .../Sources/Timeline/Status/StatusRowView.swift | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 IceCubesApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Packages/Network/Sources/Network/ModelsExt/StatusExt.swift diff --git a/IceCubesApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/IceCubesApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..e33f79a9 --- /dev/null +++ b/IceCubesApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "html2markdown", + "kind" : "remoteSourceControl", + "location" : "https://gitlab.com/mflint/HTML2Markdown", + "state" : { + "revision" : "00d7a9744bbd1e7762c587bbd248775e16345a65", + "version" : "1.0.0" + } + } + ], + "version" : 2 +} diff --git a/Packages/Network/Package.swift b/Packages/Network/Package.swift index 713fd6c6..13a06c89 100644 --- a/Packages/Network/Package.swift +++ b/Packages/Network/Package.swift @@ -13,10 +13,13 @@ let package = Package( name: "Network", targets: ["Network"]), ], + dependencies: [ + .package(url: "https://gitlab.com/mflint/HTML2Markdown", exact: "1.0.0") + ], targets: [ .target( name: "Network", - dependencies: []), + dependencies: ["HTML2Markdown"]), .testTarget( name: "NetworkTests", dependencies: ["Network"]), diff --git a/Packages/Network/Sources/Network/ModelsExt/StatusExt.swift b/Packages/Network/Sources/Network/ModelsExt/StatusExt.swift new file mode 100644 index 00000000..94b78877 --- /dev/null +++ b/Packages/Network/Sources/Network/ModelsExt/StatusExt.swift @@ -0,0 +1,13 @@ +import SwiftSoup +import HTML2Markdown + +extension Status { + public var contentAsMarkdown: String { + do { + let dom = try HTMLParser().parse(html: content) + return dom.toMarkdown() + } catch { + return content + } + } +} diff --git a/Packages/Timeline/Sources/Timeline/Status/StatusRowView.swift b/Packages/Timeline/Sources/Timeline/Status/StatusRowView.swift index f55e9144..4fc46113 100644 --- a/Packages/Timeline/Sources/Timeline/Status/StatusRowView.swift +++ b/Packages/Timeline/Sources/Timeline/Status/StatusRowView.swift @@ -28,7 +28,7 @@ struct StatusRowView: View { .foregroundColor(.gray) } } - Text(status.content) + Text(try! AttributedString(markdown: status.contentAsMarkdown)) } } }