packages feed

groot-0.0.1.0: src/Groot/Data/Text/Display.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}

module Groot.Data.Text.Display
     ( Display (..)
     ) where

import           Control.Monad.IO.Class
import           Data.Text              (Text)
import qualified Data.Text              as T
import qualified Data.Text.IO           as T
import           Network.AWS.Data.Text

class ToText a => Display a where
  display :: MonadIO m => a -> m ()

  displayLn :: MonadIO m => a -> m ()
  displayLn d = do
    display d
    liftIO $ T.putStrLn ""

instance Display Char where
  display = liftIO . print
  {-# INLINE display #-}

instance Display Text where
  display = liftIO . T.putStr
  {-# INLINE display #-}

instance Display String where
  display = display . T.pack
  {-# INLINE display #-}