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 += ""
case let list as UnorderedList:
- result += "
\n"
for child in list.children { visit(child) }
result += "
\n"
case let list as OrderedList:
@@ -116,7 +132,15 @@ struct MarkdownRenderer: MarkupWalker {
for child in list.children { visit(child) }
result += "\n"
case let item as ListItem:
- result += "
"
+ if let checkbox = item.checkbox {
+ let checked = checkbox == .checked ? " checked" : ""
+ result += "
"
+ } else if isCancelledCheckbox(item) {
+ result += "