diff options
| author | Shulhan <ms@kilabit.info> | 2022-12-03 14:25:24 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2022-12-14 23:46:53 +0700 |
| commit | 1eaba5aa4c841d15248f7ac0cf629459b491f080 (patch) | |
| tree | 6a55cbe2698b0ab1388a30a73cb37612e435e208 | |
| parent | 5c7bfc04dc3d2cd60e84c80229804fdcd615709e (diff) | |
| download | asciidoctor-go-1eaba5aa4c841d15248f7ac0cf629459b491f080.tar.xz | |
all: store the list item counter inside element
In the parseListOrdered, each time we found list item, we store its
counter and increment it by one so backend can use it to render the
counter.
| -rw-r--r-- | document_parser.go | 13 | ||||
| -rw-r--r-- | element.go | 7 |
2 files changed, 12 insertions, 8 deletions
diff --git a/document_parser.go b/document_parser.go index 9e78554..2a29152 100644 --- a/document_parser.go +++ b/document_parser.go @@ -948,13 +948,15 @@ func (docp *documentParser) parseListDescription(parent, el *element, line []byt // On success it will return non-empty line and terminator character. func (docp *documentParser) parseListOrdered(parent *element, title string, line []byte, term int) (got []byte) { var ( - logp = `parseListOrdered` - list = &element{ + logp = `parseListOrdered` + itemNumber = 1 + list = &element{ kind: elKindListOrdered, rawTitle: title, } listItem = &element{ - kind: elKindListOrderedItem, + kind: elKindListOrderedItem, + listItemNumber: itemNumber, } el *element @@ -1006,6 +1008,8 @@ func (docp *documentParser) parseListOrdered(parent *element, title string, line el.parseListOrderedItem(line) if listItem.level == el.level { + itemNumber++ + el.listItemNumber = itemNumber list.addChild(el) listItem = el line = nil @@ -1018,8 +1022,7 @@ func (docp *documentParser) parseListOrdered(parent *element, title string, line // ... Next list parentListItem = parent for parentListItem != nil { - if parentListItem.kind == docp.kind && - parentListItem.level == el.level { + if parentListItem.kind == docp.kind && parentListItem.level == el.level { list.postParseList(docp.doc, elKindListOrderedItem) return line } @@ -42,9 +42,10 @@ type element struct { elementAttribute - rawLabel bytes.Buffer - level int // The number of dot for ordered list, or '*' for unordered list. - kind int + rawLabel bytes.Buffer + level int // The number of dot for ordered list, or '*' for unordered list. + listItemNumber int // The counter for list item, start from 1. + kind int // List of substitutions to be applied on raw. applySubs int |
