module Unwitch.Convert.LazyText
( toText
, toString
, fromString
#ifdef __GLASGOW_HASKELL__
, toLazyByteStringUtf8
, toLazyByteStringUtf16LE
, toLazyByteStringUtf16BE
, toLazyByteStringUtf32LE
, toLazyByteStringUtf32BE
, toLazyByteStringLatin1
#endif
)
where
import Data.Text (Text)
import Data.Text.Lazy qualified as LT
#ifdef __GLASGOW_HASKELL__
import Data.ByteString.Lazy qualified as LBS
import Data.ByteString.Lazy.Char8 qualified as LBSC8
import Data.Text.Lazy.Encoding qualified as LTE
#endif
toText :: LT.Text -> Text
toText :: Text -> Text
toText = Text -> Text
LT.toStrict
toString :: LT.Text -> String
toString :: Text -> String
toString = Text -> String
LT.unpack
fromString :: String -> LT.Text
fromString :: String -> Text
fromString = String -> Text
LT.pack
#ifdef __GLASGOW_HASKELL__
toLazyByteStringUtf8 :: LT.Text -> LBS.ByteString
toLazyByteStringUtf8 :: Text -> ByteString
toLazyByteStringUtf8 = Text -> ByteString
LTE.encodeUtf8
toLazyByteStringUtf16LE :: LT.Text -> LBS.ByteString
toLazyByteStringUtf16LE :: Text -> ByteString
toLazyByteStringUtf16LE = Text -> ByteString
LTE.encodeUtf16LE
toLazyByteStringUtf16BE :: LT.Text -> LBS.ByteString
toLazyByteStringUtf16BE :: Text -> ByteString
toLazyByteStringUtf16BE = Text -> ByteString
LTE.encodeUtf16BE
toLazyByteStringUtf32LE :: LT.Text -> LBS.ByteString
toLazyByteStringUtf32LE :: Text -> ByteString
toLazyByteStringUtf32LE = Text -> ByteString
LTE.encodeUtf32LE
toLazyByteStringUtf32BE :: LT.Text -> LBS.ByteString
toLazyByteStringUtf32BE :: Text -> ByteString
toLazyByteStringUtf32BE = Text -> ByteString
LTE.encodeUtf32BE
toLazyByteStringLatin1 :: LT.Text -> Maybe LBS.ByteString
toLazyByteStringLatin1 :: Text -> Maybe ByteString
toLazyByteStringLatin1 Text
t = if (Char -> Bool) -> Text -> Bool
LT.all Char -> Bool
isLatin1 Text
t
then ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
forall a b. (a -> b) -> a -> b
$ String -> ByteString
LBSC8.pack (Text -> String
LT.unpack Text
t)
else Maybe ByteString
forall a. Maybe a
Nothing
isLatin1 :: Char -> Bool
isLatin1 :: Char -> Bool
isLatin1 Char
c = Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\xFF'
#endif