diff options
| author | Shulhan <ms@kilabit.info> | 2023-05-30 22:12:40 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-05-30 22:12:59 +0700 |
| commit | 4e0507b62393b8461b29cda7565f685d79b58ca3 (patch) | |
| tree | dee4458e68300225fcebb88a1ecc5577b97d4828 /document_parser.go | |
| parent | 3c25256f105271c402eb56cd19b1e73fa8fd26fb (diff) | |
| download | asciidoctor-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.go | 26 |
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') |
