hhp-1.0.0: lib/Hhp/Doc.hs
module Hhp.Doc (
showPage
, showOneLine
, getStyle
, styleUnqualified
) where
import GHC (Ghc, DynFlags, getPrintUnqual, pprCols)
import GHC.Utils.Outputable (PprStyle, SDoc, neverQualify, runSDoc, PrintUnqualified, PprStyle, Depth(..), mkUserStyle)
import GHC.Driver.Session (initSDocContext)
import GHC.Utils.Ppr (Mode(..), Style(..), renderStyle, style)
import Hhp.Gap
----------------------------------------------------------------
showPage :: DynFlags -> PprStyle -> SDoc -> String
showPage = showSDocWithMode pagemode
showOneLine :: DynFlags -> PprStyle -> SDoc -> String
showOneLine = showSDocWithMode OneLineMode
showSDocWithMode :: Mode -> DynFlags -> PprStyle -> SDoc -> String
showSDocWithMode md dflags pprstyle sdoc = renderStyle style' doc
where
ctx = initSDocContext dflags pprstyle
doc = runSDoc sdoc ctx
style' = style { mode = md, lineLength = pprCols dflags }
----------------------------------------------------------------
getStyle :: Ghc PprStyle
getStyle = makeUserStyle <$> getPrintUnqual
styleUnqualified :: PprStyle
styleUnqualified = makeUserStyle neverQualify
makeUserStyle :: PrintUnqualified -> PprStyle
makeUserStyle pu = mkUserStyle pu AllTheWay