module Graflog.Console
( Console(..)
, writeStdout'
, enableStdoutLineBuffering
) where
import Control.Monad.IO.Class (MonadIO(liftIO))
import Data.Text (Text)
import qualified Data.Text.IO as T (putStrLn)
import System.IO (hSetBuffering, stdout, BufferMode(..))
class Monad m => Console m where
writeStdout :: Text -> m ()
writeStdout' :: MonadIO m => Text -> m ()
writeStdout' = liftIO . T.putStrLn
enableStdoutLineBuffering :: MonadIO m => m ()
enableStdoutLineBuffering = liftIO $ hSetBuffering stdout LineBuffering
instance Console IO where
writeStdout = writeStdout'