Decouple render elements from blackfriday parser

This commit is contained in:
Christian Muehlhaeuser
2019-12-07 18:48:08 +01:00
parent 665477d690
commit 897b2dbd1e
13 changed files with 179 additions and 132 deletions
+8 -16
View File
@@ -3,36 +3,28 @@ package gold
import (
"io"
"strconv"
bf "gopkg.in/russross/blackfriday.v2"
)
type ItemElement struct {
Text string
Enumeration uint
}
func (e *ItemElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error {
ctx := tr.context
func (e *ItemElement) Render(w io.Writer, ctx RenderContext) error {
var el *BaseElement
if node.ListData.ListFlags&bf.ListTypeOrdered > 0 {
var l int64
n := node
for n.Prev != nil && (n.Prev.Type == bf.Item) {
l++
n = n.Prev
}
if e.Enumeration > 0 {
el = &BaseElement{
Token: string(node.Literal),
Token: e.Text,
Style: ctx.style[Enumeration],
Prefix: strconv.FormatInt(l+1, 10),
Prefix: strconv.FormatInt(int64(e.Enumeration), 10),
}
} else {
el = &BaseElement{
Token: string(node.Literal),
Token: e.Text,
Style: ctx.style[Item],
}
}
return el.Render(w, node, tr)
return el.Render(w, ctx)
}