0 | module Text.PrettyPrint.Prettyprinter.Render.String
 1 |
 2 | import Data.String
 3 | import Text.PrettyPrint.Prettyprinter.Doc
 4 |
 5 | %default total
 6 |
 7 | export
 8 | renderString : SimpleDocStream ann -> String
 9 | renderString SEmpty = neutral
10 | renderString (SChar c rest) = singleton c <+> renderString rest
11 | renderString (SText l t rest) = t <+> renderString rest
12 | renderString (SLine l rest) = singleton '\n' <+> textSpaces l <+> renderString rest
13 | renderString (SAnnPush ann rest) = renderString rest
14 | renderString (SAnnPop rest) = renderString rest
15 |
16 | export
17 | renderIO : SimpleDocStream ann -> IO ()
18 | renderIO SEmpty = pure ()
19 | renderIO (SChar c rest) = do putChar crenderIO rest
20 | renderIO (SText l t rest) = do putStr trenderIO rest
21 | renderIO (SLine l rest) = do putChar '\n'
22 |                              putStr (textSpaces l)
23 |                              renderIO rest
24 | renderIO (SAnnPush ann rest) = renderIO rest
25 | renderIO (SAnnPop rest) = renderIO rest
26 |
27 | ||| Prettyprints a document to standard output, using default options.
28 | export
29 | putDoc : Doc ann -> IO ()
30 | putDoc = renderIO . layoutPretty defaultLayoutOptions
31 |