benches/markdown: add `pandoc` engine.
[nit.git] / benchmarks / markdown / engines / pandoc / pandoc.hs
1 module Main where
2
3         import System.Environment (getArgs)
4         import Text.Pandoc
5
6         -- Reads a String and parses it as a Pandoc instance
7         readDoc :: String -> Pandoc
8         readDoc = readMarkdown def
9
10         -- Writes a Pandoc instances as a String
11         writeDoc :: Pandoc -> String
12         writeDoc = writeHtmlString def
13
14         -- Reads markdown, writes HTML and prints it in stdout
15         doBench :: String -> IO ()
16         doBench fileName        = do
17                 content                 <- readFile fileName
18                 let markdown    = readDoc content
19                 let html                =  writeDoc markdown
20                 print html
21
22         -- Executes `doBench` n times
23         loop :: Int -> String -> IO ()
24         loop 0 _ = return ()
25         loop n fileName = do
26                 doBench fileName
27                 loop (n  - 1) fileName
28                 return ()
29
30         main :: IO ()
31         main = do
32                 (fileName:count:_)      <- getArgs
33                 loop (read count::Int) fileName