Correctly render nested lists

This commit is contained in:
Christian Muehlhaeuser
2019-11-26 01:20:59 +01:00
parent 18e173b10d
commit d438c26548
+15 -3
View File
@@ -129,8 +129,12 @@ func (tr *TermRenderer) NewElement(node *bf.Node) Element {
}}, }},
} }
case bf.List: case bf.List:
pre := ""
if node.Parent.Type != bf.Item {
pre = "\n"
}
return Element{ return Element{
Pre: "\n", Pre: pre,
Post: "", Post: "",
Fragments: []Fragment{{ Fragments: []Fragment{{
Token: string(node.Literal), Token: string(node.Literal),
@@ -138,8 +142,16 @@ func (tr *TermRenderer) NewElement(node *bf.Node) Element {
}}, }},
} }
case bf.Item: case bf.Item:
l := 0
n := node
for n.Parent != nil && (n.Parent.Type == bf.List || n.Parent.Type == bf.Item) {
if n.Parent.Type == bf.List {
l++
}
n = n.Parent
}
return Element{ return Element{
Pre: "• ", Pre: strings.Repeat(" ", l-1) + "• ",
Post: "", Post: "",
Fragments: []Fragment{{ Fragments: []Fragment{{
Token: string(node.Literal), Token: string(node.Literal),
@@ -302,7 +314,7 @@ func (tr *TermRenderer) NewElement(node *bf.Node) Element {
} }
case bf.Hardbreak: case bf.Hardbreak:
return Element{ return Element{
Pre: "\n", Pre: "",
Post: "\n", Post: "\n",
Fragments: []Fragment{{ Fragments: []Fragment{{
Token: string(node.Literal), Token: string(node.Literal),