{-# LANGUAGE OverloadedStrings #-}

module Data.Text.Extended where

import qualified Data.Text as T
import Niv.Logger
import System.Exit (exitFailure)
import UnliftIO

tshow :: Show a => a -> T.Text
tshow :: a -> Text
tshow = String -> Text
T.pack (String -> Text) -> (a -> String) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show

-- not quite the perfect place for this
abort :: MonadIO io => T.Text -> io a
abort :: Text -> io a
abort Text
msg = do
  Text -> io ()
forall (io :: * -> *). MonadIO io => Text -> io ()
tsay (Text -> io ()) -> Text -> io ()
forall a b. (a -> b) -> a -> b
$ [Text] -> Text
T.unwords [T
tbold T -> T
forall a b. (a -> b) -> a -> b
$ T
tred Text
"FATAL:", Text
msg]
  IO a -> io a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO a
forall a. IO a
exitFailure