aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/RST.hs10
-rw-r--r--test/command/4579.md16
2 files changed, 23 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs
index 566f9b959..1577908a3 100644
--- a/src/Text/Pandoc/Readers/RST.hs
+++ b/src/Text/Pandoc/Readers/RST.hs
@@ -651,11 +651,15 @@ directive' = do
skipMany spaceChar
top <- many $ satisfy (/='\n')
<|> try (char '\n' <*
- notFollowedBy' (rawFieldListItem 3) <*
- count 3 (char ' ') <*
+ notFollowedBy' (rawFieldListItem 1) <*
+ many1 (char ' ') <*
notFollowedBy blankline)
newline
- fields <- many $ rawFieldListItem 3
+ fields <- do
+ fieldIndent <- length <$> lookAhead (many (char ' '))
+ if fieldIndent == 0
+ then return []
+ else many $ rawFieldListItem fieldIndent
body <- option "" $ try $ blanklines >> indentedBlock
optional blanklines
let body' = body ++ "\n\n"
diff --git a/test/command/4579.md b/test/command/4579.md
new file mode 100644
index 000000000..80f0f58c2
--- /dev/null
+++ b/test/command/4579.md
@@ -0,0 +1,16 @@
+```
+% pandoc -f rst -t native
+.. list-table::
+ :header-rows: 1
+
+ * - Foo
+ - Bar
+ * - spam
+ - ham
+^D
+[Table [] [AlignDefault,AlignDefault] [0.0,0.0]
+ [[Plain [Str "Foo"]]
+ ,[Plain [Str "Bar"]]]
+ [[[Plain [Str "spam"]]
+ ,[Plain [Str "ham"]]]]]
+```