packages feed

string-conversions 0.4 → 0.4.0.1

raw patch · 7 files changed

+340/−294 lines, 7 filesdep +QuickCheckdep +deepseqdep +hspecdep ~base

Dependencies added: QuickCheck, deepseq, hspec, quickcheck-instances

Dependency ranges changed: base

Files

− Data/String/Conversions.hs
@@ -1,184 +0,0 @@-{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances, CPP #-}---- | A type class for converting strings.--- Supported types are:------     * 'String'------     * strict 'Data.ByteString.ByteString'------     * lazy 'Data.ByteString.Lazy.ByteString'------     * strict 'Data.Text.Text'------     * lazy 'Data.Text.Lazy.Text'------ Assumes UTF-8 encoding for both types of ByteStrings.--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--#if !MIN_VERSION_base(4,8,0)-import Control.Applicative-#endif---- string imports--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 and conversions--class ConvertibleStrings a b where-    convertString :: a -> b--cs :: ConvertibleStrings a b => a -> b-cs = convertString--#if !MIN_VERSION_base(4,5,0)-(<>) :: Monoid s => s -> s -> s-(<>) = mappend-#endif---- * type synonyms--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----- instances--- ------------- from String--instance ConvertibleStrings String String where-    convertString = id--instance ConvertibleStrings String StrictByteString where-    convertString = Data.ByteString.UTF8.fromString--instance ConvertibleStrings String LazyByteString where-    convertString = Data.ByteString.Lazy.UTF8.fromString--instance ConvertibleStrings String StrictText where-    convertString = Data.Text.pack--instance ConvertibleStrings String LazyText where-    convertString = Data.Text.Lazy.pack----- from StrictByteString--instance ConvertibleStrings StrictByteString StrictByteString where-    convertString = id--instance ConvertibleStrings StrictByteString String where-    convertString = Data.ByteString.UTF8.toString--instance ConvertibleStrings StrictByteString LazyByteString where-    convertString = Data.ByteString.Lazy.fromChunks . pure--instance ConvertibleStrings StrictByteString StrictText where-    convertString = Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode--instance ConvertibleStrings StrictByteString LazyText where-    convertString =-        Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode .-        Data.ByteString.Lazy.fromChunks . pure----- from LazyByteString--instance ConvertibleStrings LazyByteString LazyByteString where-    convertString = id--instance ConvertibleStrings LazyByteString String where-    convertString = Data.ByteString.Lazy.UTF8.toString--instance ConvertibleStrings LazyByteString StrictByteString where-    convertString = mconcat . Data.ByteString.Lazy.toChunks--instance ConvertibleStrings LazyByteString StrictText where-    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.decodeUtf8With Data.Text.Encoding.Error.lenientDecode----- from StrictText--instance ConvertibleStrings StrictText StrictText where-    convertString = id--instance ConvertibleStrings StrictText String where-    convertString = Data.Text.unpack--instance ConvertibleStrings StrictText StrictByteString where-    convertString = Data.Text.Encoding.encodeUtf8--instance ConvertibleStrings StrictText LazyByteString where-    convertString = Data.ByteString.Lazy.fromChunks . pure . Data.Text.Encoding.encodeUtf8--instance ConvertibleStrings StrictText LazyText where-    convertString = Data.Text.Lazy.fromChunks . pure----- from LazyText--instance ConvertibleStrings LazyText LazyText where-    convertString = id--instance ConvertibleStrings LazyText String where-    convertString = Data.Text.Lazy.unpack--instance ConvertibleStrings LazyText StrictByteString where-    convertString =-        mconcat . Data.ByteString.Lazy.toChunks . Data.Text.Lazy.Encoding.encodeUtf8--instance ConvertibleStrings LazyText LazyByteString where-    convertString = Data.Text.Lazy.Encoding.encodeUtf8--instance ConvertibleStrings LazyText StrictText where-    convertString = mconcat . Data.Text.Lazy.toChunks
− Data/String/Conversions/Monomorphic.hs
@@ -1,95 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}---- | Monomorphic conversion functions that are useful when you wish to--- be explicit about the conversion without writing a type signature--- or when 'Data.String.Conversions.cs' is ambiguous due to--- polymorphic inputs or outputs.------ All functions in this module have 'Data.String.Conversions.cs' as--- their implementation.-module Data.String.Conversions.Monomorphic (-    -- * From a polymorphic input to a monomorphic output-    toString,-    toStrictByteString,-    toSBS,-    toLazyByteString,-    toLBS,-    toStrictText,-    toST,-    toLazyText,-    toLT,--    -- * From a monomorphic input to a polymorphic output--    fromString,-    fromStrictByteString,-    fromSBS,-    fromLazyByteString,-    fromLBS,-    fromStrictText,-    fromST,-    fromLazyText,-    fromLT-  ) where--import Prelude (String)--import Data.String.Conversions---- to a monomorphic type--toString :: ConvertibleStrings a String => a -> String-toString = cs--toStrictByteString :: ConvertibleStrings a StrictByteString => a -> StrictByteString-toStrictByteString = cs--toSBS :: ConvertibleStrings a SBS => a -> SBS-toSBS = cs--toLazyByteString :: ConvertibleStrings a LazyByteString => a -> LazyByteString-toLazyByteString = cs--toLBS :: ConvertibleStrings a LBS => a -> LBS-toLBS = cs--toStrictText :: ConvertibleStrings a StrictText => a -> StrictText-toStrictText = cs--toST :: ConvertibleStrings a ST => a -> ST-toST = cs--toLazyText :: ConvertibleStrings a LazyText => a -> LazyText-toLazyText = cs--toLT :: ConvertibleStrings a LT => a -> LT-toLT = cs---- from a monomorphic type--fromString :: ConvertibleStrings String a => String -> a-fromString = cs--fromStrictByteString :: ConvertibleStrings StrictByteString a => StrictByteString -> a-fromStrictByteString = cs--fromSBS :: ConvertibleStrings SBS a => SBS -> a-fromSBS = cs--fromLazyByteString :: ConvertibleStrings LazyByteString a => LazyByteString -> a-fromLazyByteString = cs--fromLBS :: ConvertibleStrings LBS a => LBS -> a-fromLBS = cs--fromStrictText :: ConvertibleStrings StrictText a => StrictText -> a-fromStrictText = cs--fromST :: ConvertibleStrings ST a => ST -> a-fromST = cs--fromLazyText :: ConvertibleStrings LazyText a => LazyText -> a-fromLazyText = cs--fromLT :: ConvertibleStrings LT a => LT -> a-fromLT = cs
+ src/Data/String/Conversions.hs view
@@ -0,0 +1,184 @@+{-# language MultiParamTypeClasses, TypeSynonymInstances, FlexibleInstances, CPP #-}++-- | A type class for converting strings.+-- Supported types are:+--+--     * 'String'+--+--     * strict 'Data.ByteString.ByteString'+--+--     * lazy 'Data.ByteString.Lazy.ByteString'+--+--     * strict 'Data.Text.Text'+--+--     * lazy 'Data.Text.Lazy.Text'+--+-- Assumes UTF-8 encoding for both types of ByteStrings.++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++#if !MIN_VERSION_base(4,8,0)+import Control.Applicative+#endif++-- string imports++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 and conversions++class ConvertibleStrings a b where+    convertString :: a -> b++cs :: ConvertibleStrings a b => a -> b+cs = convertString++#if !MIN_VERSION_base(4,5,0)+(<>) :: Monoid s => s -> s -> s+(<>) = mappend+#endif++-- * type synonyms++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+++-- instances+-- ---------++-- from String++instance ConvertibleStrings String String where+    convertString = id++instance ConvertibleStrings String StrictByteString where+    convertString = Data.ByteString.UTF8.fromString++instance ConvertibleStrings String LazyByteString where+    convertString = Data.ByteString.Lazy.UTF8.fromString++instance ConvertibleStrings String StrictText where+    convertString = Data.Text.pack++instance ConvertibleStrings String LazyText where+    convertString = Data.Text.Lazy.pack+++-- from StrictByteString++instance ConvertibleStrings StrictByteString StrictByteString where+    convertString = id++instance ConvertibleStrings StrictByteString String where+    convertString = Data.ByteString.UTF8.toString++instance ConvertibleStrings StrictByteString LazyByteString where+    convertString = Data.ByteString.Lazy.fromChunks . pure++instance ConvertibleStrings StrictByteString StrictText where+    convertString = Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode++instance ConvertibleStrings StrictByteString LazyText where+    convertString =+        Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode .+        Data.ByteString.Lazy.fromChunks . pure+++-- from LazyByteString++instance ConvertibleStrings LazyByteString LazyByteString where+    convertString = id++instance ConvertibleStrings LazyByteString String where+    convertString = Data.ByteString.Lazy.UTF8.toString++instance ConvertibleStrings LazyByteString StrictByteString where+    convertString = mconcat . Data.ByteString.Lazy.toChunks++instance ConvertibleStrings LazyByteString StrictText where+    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.decodeUtf8With Data.Text.Encoding.Error.lenientDecode+++-- from StrictText++instance ConvertibleStrings StrictText StrictText where+    convertString = id++instance ConvertibleStrings StrictText String where+    convertString = Data.Text.unpack++instance ConvertibleStrings StrictText StrictByteString where+    convertString = Data.Text.Encoding.encodeUtf8++instance ConvertibleStrings StrictText LazyByteString where+    convertString = Data.ByteString.Lazy.fromChunks . pure . Data.Text.Encoding.encodeUtf8++instance ConvertibleStrings StrictText LazyText where+    convertString = Data.Text.Lazy.fromChunks . pure+++-- from LazyText++instance ConvertibleStrings LazyText LazyText where+    convertString = id++instance ConvertibleStrings LazyText String where+    convertString = Data.Text.Lazy.unpack++instance ConvertibleStrings LazyText StrictByteString where+    convertString =+        mconcat . Data.ByteString.Lazy.toChunks . Data.Text.Lazy.Encoding.encodeUtf8++instance ConvertibleStrings LazyText LazyByteString where+    convertString = Data.Text.Lazy.Encoding.encodeUtf8++instance ConvertibleStrings LazyText StrictText where+    convertString = mconcat . Data.Text.Lazy.toChunks
+ src/Data/String/Conversions/Monomorphic.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE FlexibleContexts #-}++-- | Monomorphic conversion functions that are useful when you wish to+-- be explicit about the conversion without writing a type signature+-- or when 'Data.String.Conversions.cs' is ambiguous due to+-- polymorphic inputs or outputs.+--+-- All functions in this module have 'Data.String.Conversions.cs' as+-- their implementation.+module Data.String.Conversions.Monomorphic (+    -- * From a polymorphic input to a monomorphic output+    toString,+    toStrictByteString,+    toSBS,+    toLazyByteString,+    toLBS,+    toStrictText,+    toST,+    toLazyText,+    toLT,++    -- * From a monomorphic input to a polymorphic output++    fromString,+    fromStrictByteString,+    fromSBS,+    fromLazyByteString,+    fromLBS,+    fromStrictText,+    fromST,+    fromLazyText,+    fromLT+  ) where++import Prelude (String)++import Data.String.Conversions++-- to a monomorphic type++toString :: ConvertibleStrings a String => a -> String+toString = cs++toStrictByteString :: ConvertibleStrings a StrictByteString => a -> StrictByteString+toStrictByteString = cs++toSBS :: ConvertibleStrings a SBS => a -> SBS+toSBS = cs++toLazyByteString :: ConvertibleStrings a LazyByteString => a -> LazyByteString+toLazyByteString = cs++toLBS :: ConvertibleStrings a LBS => a -> LBS+toLBS = cs++toStrictText :: ConvertibleStrings a StrictText => a -> StrictText+toStrictText = cs++toST :: ConvertibleStrings a ST => a -> ST+toST = cs++toLazyText :: ConvertibleStrings a LazyText => a -> LazyText+toLazyText = cs++toLT :: ConvertibleStrings a LT => a -> LT+toLT = cs++-- from a monomorphic type++fromString :: ConvertibleStrings String a => String -> a+fromString = cs++fromStrictByteString :: ConvertibleStrings StrictByteString a => StrictByteString -> a+fromStrictByteString = cs++fromSBS :: ConvertibleStrings SBS a => SBS -> a+fromSBS = cs++fromLazyByteString :: ConvertibleStrings LazyByteString a => LazyByteString -> a+fromLazyByteString = cs++fromLBS :: ConvertibleStrings LBS a => LBS -> a+fromLBS = cs++fromStrictText :: ConvertibleStrings StrictText a => StrictText -> a+fromStrictText = cs++fromST :: ConvertibleStrings ST a => ST -> a+fromST = cs++fromLazyText :: ConvertibleStrings LazyText a => LazyText -> a+fromLazyText = cs++fromLT :: ConvertibleStrings LT a => LT -> a+fromLT = cs
string-conversions.cabal view
@@ -1,32 +1,57 @@--- Initial string-conversions.cabal generated by cabal init. For further--- documentation, see http://haskell.org/cabal/users-guide/+-- This file has been generated from package.yaml by hpack version 0.15.0.+--+-- see: https://github.com/sol/hpack  name:                string-conversions-version:             0.4+version:             0.4.0.1 synopsis:            Simplifies dealing with different types for strings-description:         Provides a simple type class for converting values-                     of different string types-                     into values of other string types.+description:         Provides a simple type class for converting values of different string types into values of other string types. license:             BSD3 license-file:        LICENSE+tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.1, GHC == 8.0.1 author:              Sönke Hahn maintainer:          soenkehahn@gmail.com--- copyright: category:            Data+homepage:            https://github.com/soenkehahn/string-conversions#readme+bug-reports:         https://github.com/soenkehahn/string-conversions/issues build-type:          Simple-cabal-version:       >=1.8+cabal-version:       >= 1.10  source-repository head-  type:     git-  location: https://github.com/soenkehahn/string-conversions.git+  type: git+  location: https://github.com/soenkehahn/string-conversions  library-  exposed-modules:     Data.String.Conversions,-                       Data.String.Conversions.Monomorphic+  hs-source-dirs:+    src+  default-language: Haskell2010   build-depends:-    base < 5,+    base == 4.*,     bytestring >= 0.9,     text >= 0.11,     utf8-string >= 0.3-  ghc-options:-    -Wall+  exposed-modules:+    Data.String.Conversions+    Data.String.Conversions.Monomorphic+  ghc-options: -Wall++test-suite spec+  type: exitcode-stdio-1.0+  main-is: Spec.hs+  hs-source-dirs:+    test,+    src+  build-depends:+    base == 4.*,+    bytestring >= 0.9,+    text >= 0.11,+    utf8-string >= 0.3,+    hspec,+    quickcheck-instances,+    deepseq,+    QuickCheck+  other-modules:+    Data.String.ConversionsSpec+    Data.String.Conversions+    Data.String.Conversions.Monomorphic+  default-language: Haskell2010
+ test/Data/String/ConversionsSpec.hs view
@@ -0,0 +1,20 @@+module Data.String.ConversionsSpec where++import           Control.DeepSeq+import           Test.Hspec+import           Test.QuickCheck+import           Test.QuickCheck.Instances ()++import           Data.String.Conversions++spec :: Spec+spec = do+  describe "cs" $ do+    it "allows to convert from String to strict Text" $ do+      property $ \ s ->+        show (s :: String) `shouldBe` show (cs s :: ST)++    context "when converting from strict ByteString to strict Text" $ do+      it "never crashes" $ do+        property $ \ s ->+          deepseq (cs (s :: SBS) :: ST) (return () :: IO ())
+ test/Spec.hs view
@@ -0,0 +1,1 @@+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}