diff --git a/MarkdownViewer/Markdown/MarkdownRenderer.swift b/MarkdownViewer/Markdown/MarkdownRenderer.swift index efd7a09..4f59ab2 100644 --- a/MarkdownViewer/Markdown/MarkdownRenderer.swift +++ b/MarkdownViewer/Markdown/MarkdownRenderer.swift @@ -59,6 +59,7 @@ struct MarkdownRenderer: MarkupWalker { var result = "" var outline: [OutlineItem] = [] var slugger = HeadingSlugger() + private var stripCancelledPrefix = false mutating func render(_ document: Document) -> RenderedMarkdown { result = "" @@ -86,7 +87,19 @@ struct MarkdownRenderer: MarkupWalker { for child in paragraph.children { visit(child) } result += "

\n" case let text as Markdown.Text: - result += escapeHTML(text.string) + if stripCancelledPrefix { + stripCancelledPrefix = false + var str = text.string + for prefix in ["[-] ", "[~] "] { + if str.hasPrefix(prefix) { + str = String(str.dropFirst(prefix.count)) + break + } + } + result += escapeHTML(str) + } else { + result += escapeHTML(text.string) + } case let emphasis as Emphasis: result += "" for child in emphasis.children { visit(child) } @@ -108,7 +121,10 @@ struct MarkdownRenderer: MarkupWalker { let alt = image.plainText result += "\"\(escapeHTML(alt))\"" case let list as UnorderedList: - result += "