1234567891011121314151617181920212223242526272829 |
- {-# LANGUAGE TypeSynonymInstances #-}
- {-# LANGUAGE FlexibleInstances #-}
- module Data.Text.IsText where
- import Data.String
- import qualified Data.ByteString as SB
- import qualified Data.ByteString.Lazy as LB
- import qualified Codec.Binary.UTF8.String as UTF8
- import qualified Data.Text as T
- {- | Type class for data structures that are logically text -}
- class IsString a => IsText a where
- toString :: a -> String
- instance IsText String where
- toString = id
- {- | The UTF-8 encoding is assumed for ByteStrings -}
- instance IsText SB.ByteString where
- toString = UTF8.decode . SB.unpack
- {- | The UTF-8 encoding is assumed for ByteStrings -}
- instance IsText LB.ByteString where
- toString = UTF8.decode . LB.unpack
- instance IsText T.Text where
- toString = T.unpack
- {- | Converts between instances of IsText -}
- fromText :: (IsText a, IsText b) => a -> b
- fromText = fromString . toString
|