-- | Text utility functions.
module NLP.Minimorph.Util
 ( (<+>), tshow )
 where

-- Only needed for older GHC, but let's avoid CPP for this instance.
import Data.Monoid ((<>))

import           Data.Text (Text)
import qualified Data.Text as T

infixr 6 <+>  -- matches Monoid.<>
-- | Separated by space unless one of them is empty (in which case just
--   the non-empty one).
(<+>) :: Text -> Text -> Text
t1 <+> t2 | T.null t1 = t2
          | T.null t2 = t1
          | otherwise = t1 <> " " <> t2

-- | Show a value in `Text` format.
tshow :: Show a => a -> Text
tshow = T.pack . show