module Text.StringConvert
( FromString
, fromString
, ToString
, toString
, StringConvert
, s
)
where
import qualified Data.Text as Text
import qualified Data.Text.Lazy as LText
import qualified Data.ByteString.UTF8 as UTF8
import qualified Data.ByteString.Lazy.UTF8 as LUTF8
import qualified Data.ByteString.Lazy as LBS
class FromString a where
fromString :: String -> a
instance FromString [Char] where
fromString = id
instance FromString Text.Text where
fromString = Text.pack
instance FromString LText.Text where
fromString = LText.pack
instance FromString UTF8.ByteString where
fromString = UTF8.fromString
instance FromString LUTF8.ByteString where
fromString = LUTF8.fromString
class ToString a where
toString :: a -> String
instance ToString [Char] where
toString = id
instance ToString LText.Text where
toString = LText.unpack
instance ToString Text.Text where
toString = Text.unpack
instance ToString UTF8.ByteString where
toString = UTF8.toString
class StringConvert a b where
s :: a -> b
instance (ToString a, FromString b) => StringConvert a b where
s = fromString . toString
instance StringConvert Text.Text LText.Text where
s = LText.fromStrict
instance StringConvert LText.Text Text.Text where
s = LText.toStrict
instance StringConvert UTF8.ByteString LUTF8.ByteString where
s = LBS.fromStrict
instance StringConvert LUTF8.ByteString UTF8.ByteString where
s = LBS.toStrict