RST reader: fix regression with code includes.
With the recent changes to include infrastructure, included code blocks were getting an extra newline. Closes #7436. Added regression test.
This commit is contained in:
parent
565330033a
commit
ae22b1e977
4 changed files with 23 additions and 1 deletions
|
@ -213,6 +213,7 @@ extra-source-files:
|
|||
test/command/B.txt
|
||||
test/command/C.txt
|
||||
test/command/D.txt
|
||||
test/command/three.txt
|
||||
test/command/01.csv
|
||||
test/command/chap1/spider.png
|
||||
test/command/chap2/spider.png
|
||||
|
|
|
@ -474,6 +474,7 @@ includeDirective top fields body = do
|
|||
case lookup "literal" fields of
|
||||
Just _ -> B.rawBlock "rst" . sourcesToText <$> getInput
|
||||
Nothing -> parseBlocks
|
||||
let isLiteral = isJust (lookup "code" fields `mplus` lookup "literal" fields)
|
||||
let selectLines =
|
||||
(case trim <$> lookup "end-before" fields of
|
||||
Just patt -> takeWhile (not . (patt `T.isInfixOf`))
|
||||
|
@ -482,8 +483,11 @@ includeDirective top fields body = do
|
|||
Just patt -> drop 1 .
|
||||
dropWhile (not . (patt `T.isInfixOf`))
|
||||
Nothing -> id)
|
||||
|
||||
let toStream t =
|
||||
toSources [(f, T.unlines . selectLines . T.lines $ t)]
|
||||
Sources [(initialPos f,
|
||||
(T.unlines . selectLines . T.lines $ t) <>
|
||||
if isLiteral then mempty else "\n")] -- see #7436
|
||||
currentDir <- takeDirectory . sourceName <$> getPosition
|
||||
insertIncludedFile parser toStream [currentDir] f startLine endLine
|
||||
|
||||
|
|
14
test/command/7436.md
Normal file
14
test/command/7436.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
```
|
||||
% pandoc -f rst -t native
|
||||
.. include:: command/three.txt
|
||||
:code:
|
||||
|
||||
.. include:: command/three.txt
|
||||
:literal:
|
||||
|
||||
.. include:: command/three.txt
|
||||
^D
|
||||
[CodeBlock ("",[""],[("code","")]) "1st line.\n2nd line.\n3rd line.\n"
|
||||
,RawBlock (Format "rst") "1st line.\n2nd line.\n3rd line.\n"
|
||||
,Para [Str "1st",Space,Str "line.",SoftBreak,Str "2nd",Space,Str "line.",SoftBreak,Str "3rd",Space,Str "line."]]
|
||||
```
|
3
test/command/three.txt
Normal file
3
test/command/three.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
1st line.
|
||||
2nd line.
|
||||
3rd line.
|
Loading…
Add table
Reference in a new issue