summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/weigh-pandoc.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/benchmark/weigh-pandoc.hs b/benchmark/weigh-pandoc.hs
new file mode 100644
index 000000000..198d09b46
--- /dev/null
+++ b/benchmark/weigh-pandoc.hs
@@ -0,0 +1,37 @@
+import Weigh
+import Text.Pandoc
+
+main :: IO ()
+main = do
+ doc <- read <$> readFile "tests/testsuite.native"
+ mainWith $ do
+ func "Pandoc document" id doc
+ mapM_
+ (\(n,r) -> weighReader doc n (handleError . r def{ readerSmart = True }))
+ [("markdown", readMarkdown)
+ ,("html", readHtml)
+ ,("docbook", readDocBook)
+ ,("latex", readLaTeX)
+ ,("commonmark", readCommonMark)
+ ]
+ mapM_
+ (\(n,w) -> weighWriter doc n (w def))
+ [("markdown", writeMarkdown)
+ ,("html", writeHtmlString)
+ ,("docbook", writeDocbook)
+ ,("latex", writeLaTeX)
+ ,("commonmark", writeCommonMark)
+ ]
+
+weighWriter :: Pandoc -> String -> (Pandoc -> String) -> Weigh ()
+weighWriter doc name writer = func (name ++ " writer") writer doc
+
+weighReader :: Pandoc -> String -> (String -> Pandoc) -> Weigh ()
+weighReader doc name reader = do
+ case lookup name writers of
+ Just (PureStringWriter writer) ->
+ let inp = writer def{ writerWrapText = WrapAuto} doc
+ in func (name ++ " reader") reader inp
+ _ -> return () -- no writer for reader
+
+