module Web.SocketIO.Types.String (
S.IsString(..)
, IsByteString(..)
, IsLazyByteString(..)
, IsText(..)
, Text
, (<>)
) where
import qualified Data.String as S
import qualified Data.Text.Lazy as TL
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Char8 as C
import Data.Monoid ((<>))
type Text = TL.Text
class IsByteString a where
fromByteString :: B.ByteString -> a
instance IsByteString String where
fromByteString = C.unpack
instance IsByteString TL.Text where
fromByteString = TL.pack . fromByteString
instance IsByteString BL.ByteString where
fromByteString = BL.fromStrict
class IsLazyByteString a where
fromLazyByteString :: BL.ByteString -> a
instance IsLazyByteString String where
fromLazyByteString = fromByteString . BL.toStrict
instance IsLazyByteString TL.Text where
fromLazyByteString = fromByteString . BL.toStrict
instance IsLazyByteString B.ByteString where
fromLazyByteString = BL.toStrict
class IsText a where
fromText :: TL.Text -> a
instance IsText String where
fromText = TL.unpack
instance IsText B.ByteString where
fromText = C.pack . fromText
instance IsText BL.ByteString where
fromText = BL.fromStrict . C.pack . fromText