rst: fix bug 20 from #17340 (#18360)

and a leftover bug: priority of option list inside definition list
This commit is contained in:
Andrey Makarov
2021-06-26 19:10:46 +03:00
committed by GitHub
parent b8f761b7e2
commit 1b9b806007
2 changed files with 50 additions and 1 deletions

View File

@@ -2245,7 +2245,7 @@ proc parseOptionList(p: var RstParser): PRstNode =
popInd(p)
else:
parseLine(p, b)
if currentTok(p).kind == tkIndent: inc p.idx
while currentTok(p).kind == tkIndent: inc p.idx
c.add(a)
c.add(b)
c.order = order; inc order
@@ -2262,6 +2262,8 @@ proc parseDefinitionList(p: var RstParser): PRstNode =
var col = currentTok(p).col
result = newRstNodeA(p, rnDefList)
while true:
if isOptionList(p):
break # option list has priority over def.list
j = p.idx
var a = newRstNode(rnDefName)
parseLine(p, a)

View File

@@ -83,6 +83,53 @@ suite "RST parsing":
rnLeaf 'set'
""")
test "items of 1 option list can be separated by blank lines":
check(dedent"""
-a desc1
-b desc2
""".toAst ==
dedent"""
rnOptionList
rnOptionListItem order=1
rnOptionGroup
rnLeaf '-'
rnLeaf 'a'
rnDescription
rnLeaf 'desc1'
rnOptionListItem order=2
rnOptionGroup
rnLeaf '-'
rnLeaf 'b'
rnDescription
rnLeaf 'desc2'
""")
test "option list has priority over definition list":
check(dedent"""
defName
defBody
-b desc2
""".toAst ==
dedent"""
rnInner
rnDefList
rnDefItem
rnDefName
rnLeaf 'defName'
rnDefBody
rnInner
rnLeaf 'defBody'
rnOptionList
rnOptionListItem order=1
rnOptionGroup
rnLeaf '-'
rnLeaf 'b'
rnDescription
rnLeaf 'desc2'
""")
test "RST comment":
check(dedent"""
.. comment1