summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2022-02-13 13:06:49 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2022-02-13 13:06:49 -0800
commit85136b064fa014a33960b4b34af6de80804db2dc (patch)
treeb7b66b5b03a2f541d73532987fcdd1d9e4a80138
parent495ae605e3238d02a7e5e3b5be6a43b50ce5e492 (diff)
Markdown reader: allow one-column pipe tables with pipe on right.
See #7919. We still need to implement this for gfm (commonmark). This must be done via changes in commonmark-hs.
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs13
-rw-r--r--test/command/7919.md59
2 files changed, 66 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index ac6be7729..25318f0f4 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -1364,9 +1364,9 @@ pipeBreak = try $ do
openPipe <- (True <$ char '|') <|> return False
first <- pipeTableHeaderPart
rest <- many $ sepPipe *> pipeTableHeaderPart
- -- surrounding pipes needed for a one-column table:
- guard $ not (null rest && not openPipe)
- optional (char '|')
+ closePipe <- (True <$ char '|') <|> return False
+ -- at least one pipe needed for a one-column table:
+ guard $ not (null rest && not (openPipe || closePipe))
blankline
return $ unzip (first:rest)
@@ -1406,9 +1406,10 @@ pipeTableRow = try $ do
-- split into cells
let chunk = void (code <|> math <|> rawHtmlInline <|> escapedChar <|> rawLaTeXInline')
<|> void (noneOf "|\n\r")
- cells <- (snd <$> withRaw (many chunk)) `sepEndBy1` char '|'
- -- surrounding pipes needed for a one-column table:
- guard $ not (length cells == 1 && not openPipe)
+ cells <- (snd <$> withRaw (many chunk)) `sepBy1` char '|'
+ closePipe <- (True <$ char '|') <|> return False
+ -- at least one pipe needed for a one-column table:
+ guard $ not (length cells == 1 && not (openPipe || closePipe))
blankline
return cells
diff --git a/test/command/7919.md b/test/command/7919.md
new file mode 100644
index 000000000..f7ff9853b
--- /dev/null
+++ b/test/command/7919.md
@@ -0,0 +1,59 @@
+```
+% pandoc -f markdown
+single column table |
+------------------- |
+item 1 |
+item 2 |
+^D
+<table>
+<thead>
+<tr class="header">
+<th>single column table</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td>item 1</td>
+</tr>
+<tr class="even">
+<td>item 2</td>
+</tr>
+</tbody>
+</table>
+```
+
+```
+% pandoc -f markdown
+| single column table
+| -------------------
+| item 1
+| item 2
+^D
+<table>
+<thead>
+<tr class="header">
+<th>single column table</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td>item 1</td>
+</tr>
+<tr class="even">
+<td>item 2</td>
+</tr>
+</tbody>
+</table>
+```
+
+```
+% pandoc -f markdown
+single column table
+-------------------
+item 1
+item 2
+^D
+<h2 id="single-column-table">single column table</h2>
+<p>item 1 item 2</p>
+```
+