From 82d6db7c7dfbc2268164aed3fb38bf2d314476ab Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 5 Dec 2019 10:05:15 +0100 Subject: [PATCH] Add new element style 'enumeration', used for items in ordered lists --- listitem.go | 25 ++++++++++++++++++++++--- style.go | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/listitem.go b/listitem.go index fee8af8..a7e76db 100644 --- a/listitem.go +++ b/listitem.go @@ -2,6 +2,7 @@ package gold import ( "io" + "strconv" bf "gopkg.in/russross/blackfriday.v2" ) @@ -10,9 +11,27 @@ type ItemElement struct { } func (e *ItemElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error { - el := &BaseElement{ - Token: string(node.Literal), - Style: Item, + 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 + } + + el = &BaseElement{ + Token: string(node.Literal), + Style: Enumeration, + Prefix: strconv.FormatInt(l+1, 10), + } + } else { + el = &BaseElement{ + Token: string(node.Literal), + Style: Item, + } } + return el.Render(w, node, tr) } diff --git a/style.go b/style.go index e227957..4fbbe6d 100644 --- a/style.go +++ b/style.go @@ -11,6 +11,7 @@ const ( BlockQuote List Item + Enumeration Paragraph Heading HorizontalRule @@ -90,6 +91,8 @@ func keyToType(key string) (StyleType, error) { return List, nil case "item": return Item, nil + case "enumeration": + return Enumeration, nil case "paragraph": return Paragraph, nil case "heading":