aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-07-09 12:27:41 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2021-07-09 12:27:41 -0700
commitae22b1e977cfb1357bb21fabc227e76a6adb0599 (patch)
tree61c666692c7115a4f693cdee6d0482819b77a4f2
parent565330033a623ed7bf4d0a3b57dd14710cf27703 (diff)
downloadpandoc-ae22b1e977cfb1357bb21fabc227e76a6adb0599.tar.gz
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.
-rw-r--r--pandoc.cabal1
-rw-r--r--src/Text/Pandoc/Readers/RST.hs6
-rw-r--r--test/command/7436.md14
-rw-r--r--test/command/three.txt3
4 files changed, 23 insertions, 1 deletions
diff --git a/pandoc.cabal b/pandoc.cabal
index 84a04c6b6..e3cd7e54f 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -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
diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs
index 35292d949..3990f0cb5 100644
--- a/src/Text/Pandoc/Readers/RST.hs
+++ b/src/Text/Pandoc/Readers/RST.hs
@@ -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
diff --git a/test/command/7436.md b/test/command/7436.md
new file mode 100644
index 000000000..ad4cb8c2f
--- /dev/null
+++ b/test/command/7436.md
@@ -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."]]
+```
diff --git a/test/command/three.txt b/test/command/three.txt
new file mode 100644
index 000000000..3ca3fdd4e
--- /dev/null
+++ b/test/command/three.txt
@@ -0,0 +1,3 @@
+1st line.
+2nd line.
+3rd line.