aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2020-07-21 10:20:15 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2020-07-21 10:20:15 -0700
commit942e3ee1f9ce3593b3ce3cc32c7ed7039aee205a (patch)
tree76227c0963b136a44849d28cb36e91a2008d8ab5
parentfe315a8290a9d192ef6fe707553f3baaafb3d035 (diff)
downloadpandoc-942e3ee1f9ce3593b3ce3cc32c7ed7039aee205a.tar.gz
RST reader: fix csv tables with multiline cells.
Closes #6549.
-rw-r--r--pandoc.cabal1
-rw-r--r--src/Text/Pandoc/Readers/RST.hs7
-rw-r--r--test/command/01.csv4
-rw-r--r--test/command/6549.md26
4 files changed, 37 insertions, 1 deletions
diff --git a/pandoc.cabal b/pandoc.cabal
index 25ce935a4..9b0ee6fb2 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -205,6 +205,7 @@ extra-source-files:
test/command/B.txt
test/command/C.txt
test/command/D.txt
+ test/command/01.csv
test/command/defaults1.yaml
test/command/defaults2.yaml
test/command/3533-rst-csv-tables.csv
diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs
index 7c25be486..25682a500 100644
--- a/src/Text/Pandoc/Readers/RST.hs
+++ b/src/Text/Pandoc/Readers/RST.hs
@@ -879,7 +879,12 @@ csvTableDirective top fields rawcsv = do
Left e ->
throwError $ PandocParsecError "csv table" e
Right rawrows -> do
- let parseCell = parseFromString' (plain <|> return mempty)
+ let singleParaToPlain bs =
+ case B.toList bs of
+ [Para ils] -> B.fromList [Plain ils]
+ _ -> bs
+ let parseCell t = singleParaToPlain
+ <$> parseFromString' parseBlocks (t <> "\n\n")
let parseRow = mapM parseCell
rows <- mapM parseRow rawrows
let (headerRow,bodyRows,numOfCols) =
diff --git a/test/command/01.csv b/test/command/01.csv
new file mode 100644
index 000000000..76a84398d
--- /dev/null
+++ b/test/command/01.csv
@@ -0,0 +1,4 @@
+"Column1";"Column2"
+"Data1";"- data1
+
+- data2"
diff --git a/test/command/6549.md b/test/command/6549.md
new file mode 100644
index 000000000..e41f4b76a
--- /dev/null
+++ b/test/command/6549.md
@@ -0,0 +1,26 @@
+```
+% pandoc -f rst
+.. csv-table:: Test table
+ :file: command/01.csv
+ :delim: ;
+ :header-rows: 1
+^D
+<table>
+<caption>Test table</caption>
+<thead>
+<tr class="header">
+<th>Column1</th>
+<th>Column2</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td>Data1</td>
+<td><ul>
+<li>data1</li>
+<li>data2</li>
+</ul></td>
+</tr>
+</tbody>
+</table>
+```