From e5cc24fb6171f0befe4d1f0a5a7b7d5194cfd72b Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Thu, 1 Nov 2018 13:43:54 +0300 Subject: Make readWithM accept Text input as well as String (API change) --- src/Text/Pandoc/Parsing.hs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'src/Text/Pandoc') diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs index 788744db3..1c2c6408c 100644 --- a/src/Text/Pandoc/Parsing.hs +++ b/src/Text/Pandoc/Parsing.hs @@ -1044,19 +1044,13 @@ gridTableFooter = blanklines --- -- | Removes the ParsecT layer from the monad transformer stack -readWithM :: (Monad m, Stream s m Char) - => ParserT s st m a -- ^ parser - -> st -- ^ initial state - -> s -- ^ input +readWithM :: (Monad m, Stream s m Char, ToString s) + => ParserT s st m a -- ^ parser + -> st -- ^ initial state + -> s -- ^ input -> m (Either PandocError a) -readWithM parser state input = do - res <- runParserT parser state "source" input - case res of - Right x -> return $ Right x - Left e -> do - inp <- either (const "") id - <$> runParserT (many1 anyChar) state "source" input - return $ Left $ PandocParsecError inp e +readWithM parser state input = + mapLeft (PandocParsecError $ toString input) `liftM` runParserT parser state "source" input -- | Parse a string with a given parser and state readWith :: Parser [Char] st a -- cgit v1.2.3