Escape markdown markup characters on their way into HTMLToMarkdown to prevent them being rendered as styled text after they come out. (#329)

This commit is contained in:
Gareth Simpson 2023-01-24 05:38:38 +00:00 committed by GitHub
parent d0854d0107
commit ffe1a1dba0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,7 +4,7 @@ import SwiftSoup
import SwiftUI
public struct HTMLString: Decodable, Equatable, Hashable {
public let htmlValue: String
public var htmlValue: String
public let asMarkdown: String
public let asRawText: String
public let statusesURLs: [URL]
@ -17,6 +17,15 @@ public struct HTMLString: Decodable, Equatable, Hashable {
} catch {
htmlValue = ""
}
// https://daringfireball.net/projects/markdown/syntax
// HTML2Markdown only auto escapes * on the way out
// so we pre-escape all other escapable sequences on
// the way in here.
if let regex = try? NSRegularExpression(pattern: "([\\\\_(){}\\[\\]\\.\\+\\-#!])", options: .caseInsensitive) {
htmlValue = regex.stringByReplacingMatches(in: htmlValue, options: [], range: NSRange(location: 0, length: htmlValue.count), withTemplate: "\\\\$1")
}
do {
asMarkdown = try HTMLParser().parse(html: htmlValue)