diff options
-rw-r--r-- | src/Text/Pandoc/Readers/RST.hs | 15 | ||||
-rw-r--r-- | test/command/5753.md | 15 |
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"]] +``` |