{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances, CPP #-}
module Data.String.Conversions (
ConvertibleStrings(..),
cs,
StrictByteString,
SBS,
LazyByteString,
LBS,
StrictText,
ST,
LazyText,
LT,
(<>),
) where
import Data.Monoid
#if !MIN_VERSION_base(4,8,0)
import Control.Applicative
#endif
import qualified Data.ByteString
import qualified Data.ByteString.UTF8
import qualified Data.ByteString.Lazy
import qualified Data.ByteString.Lazy.UTF8
import qualified Data.Text
import qualified Data.Text.Encoding hiding (decodeUtf8)
import qualified Data.Text.Encoding.Error
import qualified Data.Text.Lazy
import qualified Data.Text.Lazy.Encoding hiding (decodeUtf8)
class ConvertibleStrings a b where
convertString :: a -> b
cs :: ConvertibleStrings a b => a -> b
cs :: forall a b. ConvertibleStrings a b => a -> b
cs = forall a b. ConvertibleStrings a b => a -> b
convertString
#if !MIN_VERSION_base(4,5,0)
(<>) :: Monoid s => s -> s -> s
(<>) = mappend
#endif
type StrictByteString = Data.ByteString.ByteString
type SBS = Data.ByteString.ByteString
type LazyByteString = Data.ByteString.Lazy.ByteString
type LBS = Data.ByteString.Lazy.ByteString
type StrictText = Data.Text.Text
type ST = Data.Text.Text
type LazyText = Data.Text.Lazy.Text
type LT = Data.Text.Lazy.Text
instance ConvertibleStrings String String where
convertString :: String -> String
convertString = forall a. a -> a
id
instance ConvertibleStrings String StrictByteString where
convertString :: String -> StrictByteString
convertString = String -> StrictByteString
Data.ByteString.UTF8.fromString
instance ConvertibleStrings String LazyByteString where
convertString :: String -> LazyByteString
convertString = String -> LazyByteString
Data.ByteString.Lazy.UTF8.fromString
instance ConvertibleStrings String StrictText where
convertString :: String -> StrictText
convertString = String -> StrictText
Data.Text.pack
instance ConvertibleStrings String LazyText where
convertString :: String -> LazyText
convertString = String -> LazyText
Data.Text.Lazy.pack
instance ConvertibleStrings StrictByteString StrictByteString where
convertString :: StrictByteString -> StrictByteString
convertString = forall a. a -> a
id
instance ConvertibleStrings StrictByteString String where
convertString :: StrictByteString -> String
convertString = StrictByteString -> String
Data.ByteString.UTF8.toString
instance ConvertibleStrings StrictByteString LazyByteString where
convertString :: StrictByteString -> LazyByteString
convertString = [StrictByteString] -> LazyByteString
Data.ByteString.Lazy.fromChunks forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. Applicative f => a -> f a
pure
instance ConvertibleStrings StrictByteString StrictText where
convertString :: StrictByteString -> StrictText
convertString = OnDecodeError -> StrictByteString -> StrictText
Data.Text.Encoding.decodeUtf8With OnDecodeError
Data.Text.Encoding.Error.lenientDecode
instance ConvertibleStrings StrictByteString LazyText where
convertString :: StrictByteString -> LazyText
convertString =
OnDecodeError -> LazyByteString -> LazyText
Data.Text.Lazy.Encoding.decodeUtf8With OnDecodeError
Data.Text.Encoding.Error.lenientDecode forall b c a. (b -> c) -> (a -> b) -> a -> c
.
[StrictByteString] -> LazyByteString
Data.ByteString.Lazy.fromChunks forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. Applicative f => a -> f a
pure
instance ConvertibleStrings LazyByteString LazyByteString where
convertString :: LazyByteString -> LazyByteString
convertString = forall a. a -> a
id
instance ConvertibleStrings LazyByteString String where
convertString :: LazyByteString -> String
convertString = LazyByteString -> String
Data.ByteString.Lazy.UTF8.toString
instance ConvertibleStrings LazyByteString StrictByteString where
convertString :: LazyByteString -> StrictByteString
convertString = forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. LazyByteString -> [StrictByteString]
Data.ByteString.Lazy.toChunks
instance ConvertibleStrings LazyByteString StrictText where
convertString :: LazyByteString -> StrictText
convertString =
OnDecodeError -> StrictByteString -> StrictText
Data.Text.Encoding.decodeUtf8With OnDecodeError
Data.Text.Encoding.Error.lenientDecode forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. LazyByteString -> [StrictByteString]
Data.ByteString.Lazy.toChunks
instance ConvertibleStrings LazyByteString LazyText where
convertString :: LazyByteString -> LazyText
convertString = OnDecodeError -> LazyByteString -> LazyText
Data.Text.Lazy.Encoding.decodeUtf8With OnDecodeError
Data.Text.Encoding.Error.lenientDecode
instance ConvertibleStrings StrictText StrictText where
convertString :: StrictText -> StrictText
convertString = forall a. a -> a
id
instance ConvertibleStrings StrictText String where
convertString :: StrictText -> String
convertString = StrictText -> String
Data.Text.unpack
instance ConvertibleStrings StrictText StrictByteString where
convertString :: StrictText -> StrictByteString
convertString = StrictText -> StrictByteString
Data.Text.Encoding.encodeUtf8
instance ConvertibleStrings StrictText LazyByteString where
convertString :: StrictText -> LazyByteString
convertString = [StrictByteString] -> LazyByteString
Data.ByteString.Lazy.fromChunks forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictText -> StrictByteString
Data.Text.Encoding.encodeUtf8
instance ConvertibleStrings StrictText LazyText where
convertString :: StrictText -> LazyText
convertString = [StrictText] -> LazyText
Data.Text.Lazy.fromChunks forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a. Applicative f => a -> f a
pure
instance ConvertibleStrings LazyText LazyText where
convertString :: LazyText -> LazyText
convertString = forall a. a -> a
id
instance ConvertibleStrings LazyText String where
convertString :: LazyText -> String
convertString = LazyText -> String
Data.Text.Lazy.unpack
instance ConvertibleStrings LazyText StrictByteString where
convertString :: LazyText -> StrictByteString
convertString =
forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. LazyByteString -> [StrictByteString]
Data.ByteString.Lazy.toChunks forall b c a. (b -> c) -> (a -> b) -> a -> c
. LazyText -> LazyByteString
Data.Text.Lazy.Encoding.encodeUtf8
instance ConvertibleStrings LazyText LazyByteString where
convertString :: LazyText -> LazyByteString
convertString = LazyText -> LazyByteString
Data.Text.Lazy.Encoding.encodeUtf8
instance ConvertibleStrings LazyText StrictText where
convertString :: LazyText -> StrictText
convertString = forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. LazyText -> [StrictText]
Data.Text.Lazy.toChunks