#if __GLASGOW_HASKELL__ < 710
#endif
module Text.Display
(
Display(..)
, DisplayText
, mkDisplayText
, unDisplayText
, mkDt
, unDt
, mkDisplayTextStr
, unDisplayTextStr
, mkDtStr
, unDtStr
, dShow
, dPrint
, Pretty.ppShow
, pPrint
)
where
import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Text.IO as TextIO
import qualified Text.Show.Pretty as Pretty
newtype DisplayText = DisplayText { _fromDisplayText :: Text } deriving (Eq)
instance Show DisplayText where
show displayText = Text.unpack (unDisplayText displayText)
class Display a where
display :: a -> DisplayText
instance
#if __GLASGOW_HASKELL__ >= 710
#endif
(Show a) => Display a where
display a = (DisplayText . Text.pack . Pretty.ppShow) a
mkDisplayText :: Text -> DisplayText
mkDisplayText a = DisplayText a
mkDt :: Text -> DisplayText
mkDt = mkDisplayText
unDisplayText :: DisplayText -> Text
unDisplayText a = _fromDisplayText a
unDt :: DisplayText -> Text
unDt = unDisplayText
mkDisplayTextStr :: String -> DisplayText
mkDisplayTextStr a = mkDisplayText (Text.pack a)
mkDtStr :: String -> DisplayText
mkDtStr = mkDisplayTextStr
unDisplayTextStr :: DisplayText -> String
unDisplayTextStr a = Text.unpack (unDisplayText a)
unDtStr :: DisplayText -> String
unDtStr = unDisplayTextStr
dShow :: Display a => a -> Text
dShow a = Text.pack $ Pretty.ppShow $ display a
dPrint :: Display a => a -> IO ()
dPrint a = TextIO.putStrLn (dShow a)
pPrint :: Show a => a -> IO ()
pPrint a = putStrLn (Pretty.ppShow a)