string-conversions 0.1 → 0.2
raw patch · 2 files changed
+36/−10 lines, 2 files
Files
- Data/String/Conversions.hs +35/−9
- string-conversions.cabal +1/−1
Data/String/Conversions.hs view
@@ -1,4 +1,4 @@-{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances #-}+{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances, CPP #-} -- | A type class for converting strings. -- Supported types are:@@ -13,11 +13,29 @@ -- -- * lazy 'Data.Text.Lazy.Text' ----- Assumes UTF-8.+-- Assumes UTF-8 encoding for both types of ByteStrings. -module Data.String.Conversions where+module Data.String.Conversions (+ -- * class and conversions+ ConvertibleStrings(..),+ cs, + -- * type synonyms+ StrictByteString,+ SBS,+ LazyByteString,+ LBS,+ StrictText,+ ST,+ LazyText,+ LT, + -- | Generic string concatenation (with ghc >= 7.4 this is a re-export from Data.Monoid+ -- to avoid clashes.)+ (<>),+ ) where++ import Data.Monoid import Control.Applicative@@ -31,10 +49,11 @@ import qualified Data.ByteString.Lazy.UTF8 import qualified Data.Text-import qualified Data.Text.Encoding+import qualified Data.Text.Encoding hiding (decodeUtf8)+import qualified Data.Text.Encoding.Error import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding+import qualified Data.Text.Lazy.Encoding hiding (decodeUtf8) -- * class and conversions@@ -45,6 +64,10 @@ cs :: ConvertibleStrings a b => a -> b cs = convertString +#if !MIN_VERSION_base(4,5,0)+(<>) :: Monoid s => s -> s -> s+(<>) = mappend+#endif -- * type synonyms @@ -88,11 +111,12 @@ convertString = Data.ByteString.Lazy.fromChunks . pure instance ConvertibleStrings StrictByteString StrictText where- convertString = Data.Text.Encoding.decodeUtf8+ convertString = Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode instance ConvertibleStrings StrictByteString LazyText where convertString =- Data.Text.Lazy.Encoding.decodeUtf8 . Data.ByteString.Lazy.fromChunks . pure+ Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode .+ Data.ByteString.Lazy.fromChunks . pure -- from LazyByteString@@ -104,10 +128,12 @@ convertString = mconcat . Data.ByteString.Lazy.toChunks instance ConvertibleStrings LazyByteString StrictText where- convertString = Data.Text.Encoding.decodeUtf8 . mconcat . Data.ByteString.Lazy.toChunks+ convertString =+ Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode .+ mconcat . Data.ByteString.Lazy.toChunks instance ConvertibleStrings LazyByteString LazyText where- convertString = Data.Text.Lazy.Encoding.decodeUtf8+ convertString = Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode -- from StrictText
string-conversions.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: string-conversions-version: 0.1+version: 0.2 synopsis: Simplifies dealing with different types for strings description: Provides a simple type class for converting values of different string types