37 lines
1.2 KiB
Haskell
37 lines
1.2 KiB
Haskell
import Weigh
|
|
import Text.Pandoc
|
|
|
|
main :: IO ()
|
|
main = do
|
|
doc <- read <$> readFile "test/testsuite.native"
|
|
mainWith $ do
|
|
func "Pandoc document" id doc
|
|
mapM_
|
|
(\(n,r) -> weighReader doc n (either (error . show) id . runPure . r def{readerExtensions = pandocExtensions}))
|
|
[("markdown", readMarkdown)
|
|
,("html", readHtml)
|
|
,("docbook", readDocBook)
|
|
,("latex", readLaTeX)
|
|
,("commonmark", readCommonMark)
|
|
]
|
|
mapM_
|
|
(\(n,w) -> weighWriter doc n (either (error . show) id . runPure . w def))
|
|
[("markdown", writeMarkdown)
|
|
,("html", writeHtml5String)
|
|
,("docbook", writeDocbook5)
|
|
,("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 (StringWriter writer) ->
|
|
let inp = either (error . show) id $ runPure $ writer def{ writerWrapText = WrapAuto} doc
|
|
in func (name ++ " reader") reader inp
|
|
_ -> return () -- no writer for reader
|
|
|
|
|