aboutsummaryrefslogtreecommitdiff
path: root/document_parser.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-05-30 22:12:40 +0700
committerShulhan <ms@kilabit.info>2023-05-30 22:12:59 +0700
commit4e0507b62393b8461b29cda7565f685d79b58ca3 (patch)
treedee4458e68300225fcebb88a1ecc5577b97d4828 /document_parser.go
parent3c25256f105271c402eb56cd19b1e73fa8fd26fb (diff)
downloadasciidoctor-go-4e0507b62393b8461b29cda7565f685d79b58ca3.tar.xz
all: handle custom marker in between unordered list
Given the following markup, [square] * item 1 [circle] ** item 2 The list on item 2 now start with `<div class="ulist circle">`.
Diffstat (limited to 'document_parser.go')
-rw-r--r--document_parser.go26
1 files changed, 21 insertions, 5 deletions
diff --git a/document_parser.go b/document_parser.go
index db2dec1..baeb82e 100644
--- a/document_parser.go
+++ b/document_parser.go
@@ -1292,6 +1292,7 @@ func (docp *documentParser) parseListUnordered(parent, el *element, line []byte,
kind: elKindListUnordered,
rawTitle: el.rawTitle,
}
+ elAttr = &elementAttribute{}
listItem *element
parentListItem *element
@@ -1382,6 +1383,12 @@ func (docp *documentParser) parseListUnordered(parent, el *element, line []byte,
el = &element{
kind: elKindListUnorderedItem,
}
+ if len(elAttr.rawStyle) > 0 {
+ el.addRole(el.rawStyle)
+ el.rawStyle = elAttr.rawStyle
+ elAttr = &elementAttribute{}
+ }
+
el.parseListUnorderedItem(line)
if listItem.level == el.level {
list.addChild(el)
@@ -1402,10 +1409,8 @@ func (docp *documentParser) parseListUnordered(parent, el *element, line []byte,
// *** Next list
parentListItem = parent
for parentListItem != nil {
- if parentListItem.kind == docp.kind &&
- parentListItem.level == el.level {
- list.postParseList(docp.doc,
- elKindListUnorderedItem)
+ if parentListItem.kind == docp.kind && parentListItem.level == el.level {
+ list.postParseList(docp.doc, elKindListUnorderedItem)
return line
}
parentListItem = parentListItem.parent
@@ -1508,7 +1513,6 @@ func (docp *documentParser) parseListUnordered(parent, el *element, line []byte,
docp.kind == elKindSectionL4 ||
docp.kind == elKindSectionL5 ||
docp.kind == lineKindAdmonition ||
- docp.kind == lineKindAttributeElement ||
docp.kind == lineKindBlockTitle ||
docp.kind == lineKindID ||
docp.kind == lineKindIDShort ||
@@ -1517,6 +1521,18 @@ func (docp *documentParser) parseListUnordered(parent, el *element, line []byte,
break
}
}
+ if docp.kind == lineKindAttributeElement {
+ if docp.prevKind == lineKindEmpty {
+ break
+ }
+ // Case:
+ // * item 1
+ // [circle] <-- we are here.
+ // ** item 2
+ elAttr.parseElementAttribute(line)
+ line = nil
+ continue
+ }
listItem.Write(bytes.TrimSpace(line))
listItem.WriteByte('\n')