@@ -0,0 +1,37 @@
1+import Weigh
2+import Text.Pandoc
3+
4+main :: IO ()
5+main = do
6+ doc <- read <$> readFile "tests/testsuite.native"
7+ mainWith $ do
8+ func "Pandoc document" id doc
9+ mapM_
10+ (\(n,r) -> weighReader doc n (handleError . r def{ readerSmart = True }))
11+ [("markdown", readMarkdown)
12+ ,("html", readHtml)
13+ ,("docbook", readDocBook)
14+ ,("latex", readLaTeX)
15+ ,("commonmark", readCommonMark)
16+ ]
17+ mapM_
18+ (\(n,w) -> weighWriter doc n (w def))
19+ [("markdown", writeMarkdown)
20+ ,("html", writeHtmlString)
21+ ,("docbook", writeDocbook)
22+ ,("latex", writeLaTeX)
23+ ,("commonmark", writeCommonMark)
24+ ]
25+
26+weighWriter :: Pandoc -> String -> (Pandoc -> String) -> Weigh ()
27+weighWriter doc name writer = func (name ++ " writer") writer doc
28+
29+weighReader :: Pandoc -> String -> (String -> Pandoc) -> Weigh ()
30+weighReader doc name reader = do
31+ case lookup name writers of
32+ Just (PureStringWriter writer) ->
33+ let inp = writer def{ writerWrapText = WrapAuto} doc
34+ in func (name ++ " reader") reader inp
35+ _ -> return () -- no writer for reader
36+
37+