-- Glue to the usual Huges/SimonPJ pretty printer
module NewPrettyPrint(pp,render,quickrender,module PrettyPrint2,module PrettyEnv) where
import PrettyPrint2
import PrettyDoc
import PrettyEnv
import PrettyStd
import qualified Text.PrettyPrint as P
pp x = render (ppi x)
render = P.renderStyle normalstyle . toPretty . runEnv defaultMode
quickrender = P.renderStyle qstyle . toPretty .
runEnv defaultMode{layoutType=PPNoLayout}
qstyle = normalstyle{P.mode=P.OneLineMode}
normalstyle = P.style{P.lineLength=80}
toPretty d =
case d of
Empty -> P.empty
Char c -> P.char c
Text s -> P.text s
Attr _ d -> toPretty d
Nest n d -> P.nest n (toPretty d)
Group l ds -> group l (map toPretty ds)
where
group l =
case l of
Horiz Cat -> P.hcat
Horiz Sep -> P.hsep
Vert -> P.vcat
HorizOrVert Cat -> P.cat
HorizOrVert Sep -> P.sep
Fill Cat -> P.fcat
Fill Sep -> P.fsep