adding some utils

This commit is contained in:
Andrew Gibiansky 2014-02-28 14:23:06 -08:00
parent 392d183d16
commit e08963c7f4

View File

@ -0,0 +1,25 @@
module Language.Haskell.GHC.Util where
import GhcMonad
import GHC
import DynFlags
import Outputable
import Packages
import Module
import qualified Pretty
import FastString
doc :: GhcMonad m => SDoc -> m String
doc sdoc = do
flags <- getSessionDynFlags
unqual <- getPrintUnqual
let style = mkUserStyle unqual AllTheWay
let cols = pprCols flags
d = runSDoc sdoc (initSDocContext flags style)
return $ Pretty.fullRender Pretty.PageMode cols 1.5 string_txt "" d
where
string_txt :: Pretty.TextDetails -> String -> String
string_txt (Pretty.Chr c) s = c:s
string_txt (Pretty.Str s1) s2 = s1 ++ s2
string_txt (Pretty.PStr s1) s2 = unpackFS s1 ++ s2
string_txt (Pretty.LStr s1 _) s2 = unpackLitString s1 ++ s2