aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-12-03 14:25:24 +0700
committerShulhan <ms@kilabit.info>2022-12-14 23:46:53 +0700
commit1eaba5aa4c841d15248f7ac0cf629459b491f080 (patch)
tree6a55cbe2698b0ab1388a30a73cb37612e435e208
parent5c7bfc04dc3d2cd60e84c80229804fdcd615709e (diff)
downloadasciidoctor-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.go13
-rw-r--r--element.go7
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
}
diff --git a/element.go b/element.go
index 8f6348d..c0e94c1 100644
--- a/element.go
+++ b/element.go
@@ -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