rst: allow comment to continue on second line (#18338)

This commit is contained in:
Andrey Makarov 2021-06-24 11:28:28 +03:00 • committed by GitHub
commit 0c8d3ae985
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 76 additions and 18 deletions

View file

@ -1615,24 +1615,16 @@ proc getDirective(p: var RstParser): string =
"too many colons for a directive (should be ::)",
p.tok[afterIdx].line, p.tok[afterIdx].col)
proc parseComment(p: var RstParser): PRstNode =
case currentTok(p).kind
of tkIndent, tkEof:
if currentTok(p).kind != tkEof and nextTok(p).kind == tkIndent:
inc p.idx # empty comment
else:
var indent = currentTok(p).ival
while true:
case currentTok(p).kind
of tkEof:
break
of tkIndent:
if currentTok(p).ival < indent: break
else:
discard
inc p.idx
proc parseComment(p: var RstParser, col: int): PRstNode =
if currentTok(p).kind != tkEof and nextTok(p).kind == tkIndent:
inc p.idx # empty comment
else:
while currentTok(p).kind notin {tkIndent, tkEof}: inc p.idx
while currentTok(p).kind != tkEof:
if currentTok(p).kind == tkIndent and currentTok(p).ival > col or
currentTok(p).kind != tkIndent and currentTok(p).col > col:
inc p.idx
else:
break
result = nil
proc parseLine(p: var RstParser, father: PRstNode) =
@ -2841,7 +2833,7 @@ proc parseDotDot(p: var RstParser): PRstNode =
(n = parseFootnote(p); n != nil):
result = n
else:
result = parseComment(p)
result = parseComment(p, col)
proc rstParsePass1*(fragment, filename: string,
line, column: int,