aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/RST.hs15
-rw-r--r--test/command/5753.md15
2 files changed, 24 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs
index 8875fdebe..fd20351b4 100644
--- a/src/Text/Pandoc/Readers/RST.hs
+++ b/src/Text/Pandoc/Readers/RST.hs
@@ -363,16 +363,19 @@ hrule = try $ do
--
-- read a line indented by a given string
-indentedLine :: Monad m => String -> ParserT [Char] st m [Char]
+indentedLine :: (HasReaderOptions st, Monad m)
+ => Int -> ParserT [Char] st m [Char]
indentedLine indents = try $ do
- string indents
+ lookAhead spaceChar
+ gobbleAtMostSpaces indents
anyLine
-- one or more indented lines, possibly separated by blank lines.
-- any amount of indentation will work.
-indentedBlock :: Monad m => ParserT [Char] st m [Char]
+indentedBlock :: (HasReaderOptions st, Monad m)
+ => ParserT [Char] st m [Char]
indentedBlock = try $ do
- indents <- lookAhead $ many1 spaceChar
+ indents <- length <$> lookAhead (many1 spaceChar)
lns <- many1 $ try $ do b <- option "" blanklines
l <- indentedLine indents
return (b ++ l)
@@ -389,10 +392,10 @@ quotedBlock = try $ do
codeBlockStart :: Monad m => ParserT [Char] st m Char
codeBlockStart = string "::" >> blankline >> blankline
-codeBlock :: Monad m => ParserT [Char] st m Blocks
+codeBlock :: (HasReaderOptions st, Monad m) => ParserT [Char] st m Blocks
codeBlock = try $ codeBlockStart >> codeBlockBody
-codeBlockBody :: Monad m => ParserT [Char] st m Blocks
+codeBlockBody :: (HasReaderOptions st, Monad m) => ParserT [Char] st m Blocks
codeBlockBody = try $ B.codeBlock . stripTrailingNewlines <$>
(indentedBlock <|> quotedBlock)
diff --git a/test/command/5753.md b/test/command/5753.md
new file mode 100644
index 000000000..c82db6727
--- /dev/null
+++ b/test/command/5753.md
@@ -0,0 +1,15 @@
+```
+% pandoc -f rst -t native
+.. math::
+
+ q_3
+ + 4
+ - 5
+
+ q_5
+
+end
+^D
+[Para [Math DisplayMath "q_3\n+ 4\n- 5",Math DisplayMath "q_5"]
+,Para [Str "end"]]
+```