{-# LANGUAGE CPP #-}

#if __GLASGOW_HASKELL__ > 802
module Text.Utf8.Compat where

import qualified Data.ByteString.Builder  as BB
import           Data.Text.Encoding.Error
import qualified Data.Text.Lazy           as TL
import qualified Data.Text.Lazy.Builder   as TB
import qualified Data.Text.Lazy.Encoding  as TL
import           System.IO

#else
module Text.Utf8.Compat
  ( Semigroup(..)
  , module Text.Utf8.Compat
  ) where

import qualified Data.ByteString.Builder  as BB
import           Data.Text.Encoding.Error
import qualified Data.Text.Lazy           as TL
import qualified Data.Text.Lazy.Builder   as TB
import qualified Data.Text.Lazy.Encoding  as TL
import           System.IO

import           Data.Semigroup
#endif


--
-- internal helper functions
--

decUtf8TL :: BB.Builder -> TL.Text
decUtf8TL = TL.decodeUtf8With lenientDecode . BB.toLazyByteString

encUtf8TB :: TB.Builder -> BB.Builder
encUtf8TB = TL.encodeUtf8Builder . TB.toLazyText

putBuilder :: BB.Builder -> IO ()
putBuilder = BB.hPutBuilder stdout