unwitch-3.0.0: src/Unwitch/Convert/ByteString.hs
-- | Conversions from 'Data.ByteString.ByteString'.
module Unwitch.Convert.ByteString
( toLazyByteString
, toShortByteString
, toWord8s
, fromWord8s
, toTextLatin1
#ifdef __GLASGOW_HASKELL__
, toTextUtf8
, toTextUtf16LE
, toTextUtf16BE
, toTextUtf32LE
, toTextUtf32BE
#endif
)
where
import Data.ByteString (ByteString)
import Data.ByteString qualified as BS
import Data.ByteString.Lazy qualified as LBS
import Data.ByteString.Short qualified as SBS
import Data.ByteString.Short (ShortByteString)
import Data.Text (Text)
import Data.Text.Encoding qualified as TE
import Data.Word (Word8)
#ifdef __GLASGOW_HASKELL__
import Data.Text.Encoding.Error (UnicodeException)
import Unwitch.TryEvaluate (tryEvaluate)
#endif
toLazyByteString :: ByteString -> LBS.ByteString
toLazyByteString = LBS.fromStrict
toShortByteString :: ByteString -> ShortByteString
toShortByteString = SBS.toShort
toWord8s :: ByteString -> [Word8]
toWord8s = BS.unpack
fromWord8s :: [Word8] -> ByteString
fromWord8s = BS.pack
toTextLatin1 :: ByteString -> Text
toTextLatin1 = TE.decodeLatin1
#ifdef __GLASGOW_HASKELL__
toTextUtf8 :: ByteString -> Either UnicodeException Text
toTextUtf8 = TE.decodeUtf8'
toTextUtf16LE :: ByteString -> Either UnicodeException Text
toTextUtf16LE = tryEvaluate . TE.decodeUtf16LE
toTextUtf16BE :: ByteString -> Either UnicodeException Text
toTextUtf16BE = tryEvaluate . TE.decodeUtf16BE
toTextUtf32LE :: ByteString -> Either UnicodeException Text
toTextUtf32LE = tryEvaluate . TE.decodeUtf32LE
toTextUtf32BE :: ByteString -> Either UnicodeException Text
toTextUtf32BE = tryEvaluate . TE.decodeUtf32BE
#endif