diff options
| -rw-r--r-- | document_parser.go | 24 | ||||
| -rw-r--r-- | testdata/comment_test.txt | 158 |
2 files changed, 176 insertions, 6 deletions
diff --git a/document_parser.go b/document_parser.go index 3a0a2f8..74c14b6 100644 --- a/document_parser.go +++ b/document_parser.go @@ -62,8 +62,8 @@ func parseSub(parentDoc *Document, content []byte) (subdoc *Document) { return subdoc } -// consumeLinesUntil given an element el, consume all lines until we found -// a line with kind match with term or match with one in terms. +// consumeLinesUntil given an element el, consume lines until we found a line +// with kind match with term OR match with one of kind in the terms. func (docp *documentParser) consumeLinesUntil(el *element, term int, terms []int) (line []byte) { var ( logp = `consumeLinesUntil` @@ -1283,8 +1283,14 @@ func (docp *documentParser) parseListOrdered(parent *element, title string, line docp.kind == lineKindAttributeElement || docp.kind == lineKindBlockTitle || docp.kind == lineKindID || - docp.kind == lineKindIDShort || - docp.kind == lineKindText { + docp.kind == lineKindIDShort { + if docp.prevKind == lineKindEmpty || + docp.prevKind == lineKindComment || + docp.prevKind == lineKindBlockComment { + break + } + } + if docp.kind == lineKindText { if docp.prevKind == lineKindEmpty { break } @@ -1531,8 +1537,14 @@ func (docp *documentParser) parseListUnordered(parent, el *element, line []byte, docp.kind == lineKindAdmonition || docp.kind == lineKindBlockTitle || docp.kind == lineKindID || - docp.kind == lineKindIDShort || - docp.kind == lineKindText { + docp.kind == lineKindIDShort { + if docp.prevKind == lineKindEmpty || + docp.prevKind == lineKindComment || + docp.prevKind == lineKindBlockComment { + break + } + } + if docp.kind == lineKindText { if docp.prevKind == lineKindEmpty { break } diff --git a/testdata/comment_test.txt b/testdata/comment_test.txt new file mode 100644 index 0000000..05eec37 --- /dev/null +++ b/testdata/comment_test.txt @@ -0,0 +1,158 @@ +Test comments. + +>>> section after comment += Title + +//{{{ +== Sub 1 + +* List +** Sub list ++ +Sub list content. + +//}}} +//{{{ +== Sub 2 + +. Ordered +.. Sub ordered ++ +Sub 2 content. + +//}}} +//{{{ +== Sub 3 + +//}}} + +<<< section after comment + +<div class="sect1"> +<h2 id="sub_1">Sub 1</h2> +<div class="sectionbody"> +<div class="ulist"> +<ul> +<li> +<p>List</p> +<div class="ulist"> +<ul> +<li> +<p>Sub list</p> +<div class="paragraph"> +<p>Sub list content.</p> +</div> +</li> +</ul> +</div> +</li> +</ul> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="sub_2">Sub 2</h2> +<div class="sectionbody"> +<div class="olist arabic"> +<ol class="arabic"> +<li> +<p>Ordered</p> +<div class="olist loweralpha"> +<ol class="loweralpha" type="a"> +<li> +<p>Sub ordered</p> +<div class="paragraph"> +<p>Sub 2 content.</p> +</div> +</li> +</ol> +</div> +</li> +</ol> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="sub_3">Sub 3</h2> +<div class="sectionbody"> +</div> +</div> + +>>> section after block comment += Title + +//{{{ +== Sub 1 + +* List +** Sub list ++ +Sub list content. + +//}}} +//// +Block comment +//// +== Sub 2 + +. Ordered +.. Sub ordered ++ +Sub 2 content. + +//// +Block comment +//// +== Sub 3 + +<<< section after block comment + +<div class="sect1"> +<h2 id="sub_1">Sub 1</h2> +<div class="sectionbody"> +<div class="ulist"> +<ul> +<li> +<p>List</p> +<div class="ulist"> +<ul> +<li> +<p>Sub list</p> +<div class="paragraph"> +<p>Sub list content.</p> +</div> +</li> +</ul> +</div> +</li> +</ul> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="sub_2">Sub 2</h2> +<div class="sectionbody"> +<div class="olist arabic"> +<ol class="arabic"> +<li> +<p>Ordered</p> +<div class="olist loweralpha"> +<ol class="loweralpha" type="a"> +<li> +<p>Sub ordered</p> +<div class="paragraph"> +<p>Sub 2 content.</p> +</div> +</li> +</ol> +</div> +</li> +</ol> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="sub_3">Sub 3</h2> +<div class="sectionbody"> +</div> +</div> |
