diff options
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r-- | src/Text/Pandoc/Readers/RST.hs | 15 |
1 files changed, 9 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) |