pandoc-plot-1.3.0: benchmark/bench.hs
{-# LANGUAGE TemplateHaskell #-}
import Criterion.Main
( bench,
bgroup,
defaultMain,
envWithCleanup,
nfIO,
)
import MatplotlibGallery
( galleryItem1,
galleryItem2,
galleryItem3,
galleryItem4,
)
import Text.Pandoc.Definition (Block (CodeBlock), Pandoc (..))
import Text.Pandoc.Filter.Plot
( Configuration (logSink, logVerbosity),
LogSink (StdErr),
Script,
Toolkit (Matplotlib),
Verbosity (Silent),
cleanOutputDirs,
defaultConfiguration,
plotFilter,
)
import Text.Pandoc.Filter.Plot.Internal (cls)
main :: IO ()
main =
defaultMain
[ envWithCleanup (return ()) (\_ -> cleanupEnv) $ \_ ->
bgroup
"main"
[ bench "filter" $ nfIO (plotFilter plotConfig Nothing benchDoc)
]
]
plotConfig :: Configuration
plotConfig = defaultConfiguration {logVerbosity = Silent, logSink = StdErr}
cleanupEnv :: IO ()
cleanupEnv = cleanOutputDirs plotConfig benchDoc >> return ()
codeBlock :: Script -> Block
codeBlock = CodeBlock (mempty, [cls Matplotlib], mempty)
benchDoc :: Pandoc
benchDoc =
Pandoc
mempty
[ codeBlock $(galleryItem1),
codeBlock $(galleryItem2),
codeBlock $(galleryItem3),
codeBlock $(galleryItem4)
]