packages feed

cassava 0.5.3.2 → 0.5.4.0

raw patch · 3 files changed

+41/−9 lines, 3 filesdep ~QuickCheckPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: QuickCheck

API changes (from Hackage documentation)

+ Data.Csv: ($dmheaderOrder) :: (DefaultOrdered a, Generic a, GToNamedRecordHeader (Rep a)) => a -> Header
+ Data.Csv: ($dmparseNamedRecord) :: (FromNamedRecord a, Generic a, GFromNamedRecord (Rep a)) => NamedRecord -> Parser a
+ Data.Csv: ($dmparseRecord) :: (FromRecord a, Generic a, GFromRecord (Rep a)) => Record -> Parser a
+ Data.Csv: ($dmtoNamedRecord) :: (ToNamedRecord a, Generic a, GToRecord (Rep a) (ByteString, ByteString)) => a -> NamedRecord
+ Data.Csv: ($dmtoRecord) :: (ToRecord a, Generic a, GToRecord (Rep a) Field) => a -> Record
+ Data.Csv.Streaming: decodeByNameWithP :: (NamedRecord -> Parser a) -> DecodeOptions -> ByteString -> Either String (Header, Records a)
+ Data.Csv.Streaming: decodeWithP :: (Record -> Parser a) -> DecodeOptions -> HasHeader -> ByteString -> Records a
- Data.Csv: class GFromNamedRecord f
+ Data.Csv: class GFromNamedRecord (f :: k -> Type)
- Data.Csv: class GFromRecord f
+ Data.Csv: class GFromRecord (f :: k -> Type)
- Data.Csv: class GToNamedRecordHeader a
+ Data.Csv: class GToNamedRecordHeader (a :: k -> Type)
- Data.Csv: class GToRecord a f
+ Data.Csv: class GToRecord (a :: k -> Type) f
- Data.Csv: encodeDefaultOrderedByNameWith :: forall a. (DefaultOrdered a, ToNamedRecord a) => EncodeOptions -> [a] -> ByteString
+ Data.Csv: encodeDefaultOrderedByNameWith :: (DefaultOrdered a, ToNamedRecord a) => EncodeOptions -> [a] -> ByteString
- Data.Csv: headerOrder :: (DefaultOrdered a, Generic a, GToNamedRecordHeader (Rep a)) => a -> Header
+ Data.Csv: headerOrder :: DefaultOrdered a => a -> Header
- Data.Csv: newtype () => Only a
+ Data.Csv: newtype Only a
- Data.Csv: parseNamedRecord :: (FromNamedRecord a, Generic a, GFromNamedRecord (Rep a)) => NamedRecord -> Parser a
+ Data.Csv: parseNamedRecord :: FromNamedRecord a => NamedRecord -> Parser a
- Data.Csv: parseRecord :: (FromRecord a, Generic a, GFromRecord (Rep a)) => Record -> Parser a
+ Data.Csv: parseRecord :: FromRecord a => Record -> Parser a
- Data.Csv: toNamedRecord :: (ToNamedRecord a, Generic a, GToRecord (Rep a) (ByteString, ByteString)) => a -> NamedRecord
+ Data.Csv: toNamedRecord :: ToNamedRecord a => a -> NamedRecord
- Data.Csv: toRecord :: (ToRecord a, Generic a, GToRecord (Rep a) Field) => a -> Record
+ Data.Csv: toRecord :: ToRecord a => a -> Record
- Data.Csv.Builder: encodeDefaultOrderedNamedRecordWith :: forall a. (DefaultOrdered a, ToNamedRecord a) => EncodeOptions -> a -> Builder
+ Data.Csv.Builder: encodeDefaultOrderedNamedRecordWith :: (DefaultOrdered a, ToNamedRecord a) => EncodeOptions -> a -> Builder
- Data.Csv.Incremental: encodeDefaultOrderedByNameWith :: forall a. (DefaultOrdered a, ToNamedRecord a) => EncodeOptions -> NamedBuilder a -> ByteString
+ Data.Csv.Incremental: encodeDefaultOrderedByNameWith :: (DefaultOrdered a, ToNamedRecord a) => EncodeOptions -> NamedBuilder a -> ByteString

Files

CHANGES.md view
@@ -1,3 +1,9 @@+## Version 0.5.4.0++ * Add `decodeWithP` and `decodeByNameWithP` to `Streaming` interface ([PR #237](https://github.com/haskell-hvr/cassava/pull/237)).+ * Build tested with GHC 8.0 - 9.12.2.+ * Functionality tested with GHC 8.4 - 9.12.2.+ ## Version 0.5.3.2   * Proper exception on hanging doublequote ([PR #222](https://github.com/haskell-hvr/cassava/pull/222)).
cassava.cabal view
@@ -1,6 +1,6 @@ cabal-version:       1.12 Name:                cassava-Version:             0.5.3.2+Version:             0.5.4.0 Synopsis:            A CSV parsing and encoding library Description: { @@ -43,9 +43,10 @@                      CHANGES.md,                      README.md Tested-with:-  GHC == 9.10.1-  GHC == 9.8.2-  GHC == 9.6.6+  GHC == 9.12.2+  GHC == 9.10.2+  GHC == 9.8.4+  GHC == 9.6.7   GHC == 9.4.8   GHC == 9.2.8   GHC == 9.0.2@@ -102,7 +103,7 @@     , array        >= 0.4      && < 0.6     , attoparsec   >= 0.11.3.0 && < 0.15     , bytestring   >= 0.10.4   && < 0.13-    , containers   >= 0.4.2    && < 0.8+    , containers   >= 0.4.2    && < 1     , deepseq      >= 1.1      && < 1.6     , hashable                    < 2     , scientific   >= 0.3.4.7  && < 0.4
src/Data/Csv/Streaming.hs view
@@ -21,11 +21,13 @@     , HasHeader(..)     , decode     , decodeWith+    , decodeWithP      -- ** Name-based record conversion     -- $namebased     , decodeByName     , decodeByNameWith+    , decodeByNameWithP     ) where  import Control.DeepSeq (NFData(rnf))@@ -36,8 +38,9 @@ import Prelude hiding (foldr)  import Data.Csv.Conversion+import qualified Data.Csv.Conversion as Conversion import Data.Csv.Incremental hiding (decode, decodeByName, decodeByNameWith,-                                    decodeWith)+                                    decodeByNameWithP, decodeWith, decodeWithP) import qualified Data.Csv.Incremental as I import Data.Csv.Parser import Data.Csv.Types@@ -134,8 +137,19 @@                              -- skipped            -> BL.ByteString  -- ^ CSV data            -> Records a-decodeWith !opts hasHeader s0 =-    go (BL.toChunks s0) (I.decodeWith opts hasHeader)+decodeWith = decodeWithP parseRecord++-- | Like 'decodeWith', but lets you specify a parser function.+--+-- @since 0.5.4.0+decodeWithP :: (Record -> Conversion.Parser a)+           -> DecodeOptions  -- ^ Decoding options+           -> HasHeader      -- ^ Data contains header that should be+                             -- skipped+           -> BL.ByteString  -- ^ CSV data+           -> Records a+decodeWithP _parseRecord !opts hasHeader s0 =+    go (BL.toChunks s0) (I.decodeWithP _parseRecord opts hasHeader)   where     go ss (Done xs)       = foldr Cons (Nil Nothing (BL.fromChunks ss)) xs     go ss (Fail rest err) = Nil (Just err) (BL.fromChunks (rest:ss))@@ -159,7 +173,18 @@                  => DecodeOptions  -- ^ Decoding options                  -> BL.ByteString  -- ^ CSV data                  -> Either String (Header, Records a)-decodeByNameWith !opts s0 = go (BL.toChunks s0) (I.decodeByNameWith opts)+decodeByNameWith = decodeByNameWithP parseNamedRecord++-- | Like 'decodeByNameWith', but lets you specify a parser function.+--+-- @since 0.5.4.0+decodeByNameWithP :: (NamedRecord -> Conversion.Parser a)+                  -- ^ Custom parser function+                 -> DecodeOptions  -- ^ Decoding options+                 -> BL.ByteString  -- ^ CSV data+                 -> Either String (Header, Records a)+decodeByNameWithP _parseNamedRecord !opts s0 =+  go (BL.toChunks s0) (I.decodeByNameWithP _parseNamedRecord opts)   where     go ss (DoneH hdr p)    = Right (hdr, go2 ss p)     go ss (FailH rest err) = Left $ err ++ " at " ++