@@ -22,15 +22,17 @@ import System.Environment (getArgs)
2222import Data.Monoid
2323import Data.Maybe (mapMaybe)
2424import Debug.Trace (trace)
25+import Text.Pandoc.Error
26+import Control.Applicative
2527
2628readerBench :: Pandoc
27− -> (String, ReaderOptions -> String -> IO Pandoc)
29+ -> (String, ReaderOptions -> String -> IO (Either PandocError Pandoc))
2830 -> Maybe Benchmark
2931readerBench doc (name, reader) = case lookup name writers of
3032 Just (PureStringWriter writer) ->
3133 let inp = writer def{ writerWrapText = True} doc
3234 in return $ bench (name ++ " reader") $ nfIO $
33− (reader def{ readerSmart = True }) inp
35+ (fmap handleError <$> reader def{ readerSmart = True }) inp
3436 _ -> trace ("\nCould not find writer for " ++ name ++ "\n") Nothing
3537
3638writerBench :: Pandoc
@@ -46,7 +48,7 @@ main = do
4648 defaultOptions args
4749 inp <- readFile "tests/testsuite.txt"
4850 let opts = def{ readerSmart = True }
49− let doc = readMarkdown opts inp
51+ let doc = handleError $ readMarkdown opts inp
5052 let readers' = [(n,r) | (n, StringReader r) <- readers]
5153 let readerBs = mapMaybe (readerBench doc)
5254 $ filter (\(n,_) -> n /="haddock") readers'