module Stg.Language.Prettyprint (
Pretty(..),
prettyprint,
prettyprintPlain,
) where
import Data.Text (Text)
import qualified Data.Text as T
import Prelude hiding ((<$>))
import Text.PrettyPrint.ANSI.Leijen
prettyprint :: Pretty a => a -> Text
prettyprint = prettyprintModified id
prettyprintPlain :: Pretty a => a -> Text
prettyprintPlain = prettyprintModified plain
prettyprintModified :: Pretty a => (Doc -> Doc) -> a -> Text
prettyprintModified modifier input =
T.pack (displayS (renderPretty 0.4 1000 (modifier (pretty input))) "")