diff options
-rw-r--r-- | pandoc.cabal | 1 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/RST.hs | 7 | ||||
-rw-r--r-- | test/command/01.csv | 4 | ||||
-rw-r--r-- | test/command/6549.md | 26 |
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> +``` |