function strip(tree, txt) {
let entries = []
const cursor = tree.cursor(0)
if (cursor.name === "HeaderMark" || cursor.name === "ListMark") {
entries.push(["block", "skip"])
entries.push(["children", []])
return Object.fromEntries(entries)
} else if (cursor.name.startsWith("ATXHeading")) {
entries.push(["block", "h" + cursor.name.slice(10,11)])
entries.push(["content", txt.slice(cursor.from, cursor.to + 1)])
entries.push(["children", []])
return Object.fromEntries(entries)
} else if (cursor.name === "Paragraph") {
entries.push(["block", "p"])
entries.push(["content", txt.slice(cursor.from, cursor.to + 1)])
entries.push(["children", []])
return Object.fromEntries(entries)
} else if (cursor.name === "BulletList") {
entries.push(["block", "l"])
} else if (cursor.name === "ListItem") {
entries.push(["block", "i"])
} else if (cursor.name === "Task") {
entries.push(["block", "t"])
entries.push(["content", txt.slice(cursor.from, cursor.to + 1)])
} else if (cursor.name === "Blockquote") {
entries.push(["block", "q"])
} else {
entries.push(["block", cursor.name])
}
let children = []
if (cursor.firstChild()) {
let go = true;
while (go) {
if (cursor.tree === null) {
console.log("cursor treeBuffer", cursor.buffer.buffer.toString())
} else {
children.push(strip(cursor.tree, txt.slice(cursor.from, cursor.to)))
}
go = cursor.nextSibling()
}
}
entries.push(["children", children])
return Object.fromEntries(entries)
}