module Unwitch.Convert.Text
( toLazyText
, toString
, fromString
, toByteStringUtf8
, toByteStringUtf16LE
, toByteStringUtf16BE
, toByteStringUtf32LE
, toByteStringUtf32BE
, toByteStringLatin1
)
where
import Data.ByteString (ByteString)
import Data.ByteString.Char8 qualified as BSC8
import Data.Text (Text)
import Data.Text qualified as T
import Data.Text.Encoding qualified as TE
import Data.Text.Lazy qualified as LT
toLazyText :: Text -> LT.Text
#ifdef __GLASGOW_HASKELL__
toLazyText :: Text -> Text
toLazyText = Text -> Text
LT.fromStrict
#else
toLazyText = LT.toLazy
#endif
toString :: Text -> String
toString :: Text -> String
toString = Text -> String
T.unpack
fromString :: String -> Text
fromString :: String -> Text
fromString = String -> Text
T.pack
toByteStringUtf8 :: Text -> ByteString
toByteStringUtf8 :: Text -> ByteString
toByteStringUtf8 = Text -> ByteString
TE.encodeUtf8
toByteStringUtf16LE :: Text -> ByteString
toByteStringUtf16LE :: Text -> ByteString
toByteStringUtf16LE = Text -> ByteString
TE.encodeUtf16LE
toByteStringUtf16BE :: Text -> ByteString
toByteStringUtf16BE :: Text -> ByteString
toByteStringUtf16BE = Text -> ByteString
TE.encodeUtf16BE
toByteStringUtf32LE :: Text -> ByteString
toByteStringUtf32LE :: Text -> ByteString
toByteStringUtf32LE = Text -> ByteString
TE.encodeUtf32LE
toByteStringUtf32BE :: Text -> ByteString
toByteStringUtf32BE :: Text -> ByteString
toByteStringUtf32BE = Text -> ByteString
TE.encodeUtf32BE
toByteStringLatin1 :: Text -> Maybe ByteString
toByteStringLatin1 :: Text -> Maybe ByteString
toByteStringLatin1 Text
t = if (Char -> Bool) -> String -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Char -> Bool
isLatin1 String
str
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
BSC8.pack String
str
else Maybe ByteString
forall a. Maybe a
Nothing
where str :: String
str = Text -> String
T.unpack Text
t
isLatin1 :: Char -> Bool
isLatin1 :: Char -> Bool
isLatin1 Char
c = Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\xFF'