packages feed

servant-cassava 0.4.4.7 → 0.5

raw patch · 4 files changed

+44/−8 lines, 4 filesdep ~servantPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: servant

API changes (from Hackage documentation)

+ Servant.CSV.Cassava: instance (Data.Csv.Conversion.DefaultOrdered a, Data.Csv.Conversion.ToNamedRecord a, Servant.CSV.Cassava.EncodeOpts opt) => Servant.API.ContentTypes.MimeRender (Servant.CSV.Cassava.CSV', opt) (Data.Vector.Vector a)
+ Servant.CSV.Cassava: instance (Data.Csv.Conversion.FromNamedRecord a, Servant.CSV.Cassava.DecodeOpts opt) => Servant.API.ContentTypes.MimeUnrender (Servant.CSV.Cassava.CSV', opt) (Data.Csv.Types.Header, [a])
+ Servant.CSV.Cassava: instance (Data.Csv.Conversion.FromRecord a, Servant.CSV.Cassava.DecodeOpts opt) => Servant.API.ContentTypes.MimeUnrender (Servant.CSV.Cassava.CSV', opt) [a]
+ Servant.CSV.Cassava: instance (Data.Csv.Conversion.ToNamedRecord a, Servant.CSV.Cassava.EncodeOpts opt) => Servant.API.ContentTypes.MimeRender (Servant.CSV.Cassava.CSV', opt) (Data.Csv.Types.Header, Data.Vector.Vector a)

Files

LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2015, Julian K. Arni+Copyright (c) 2015-2016, Servant Contributors  All rights reserved. 
+ include/overlapping-compat.h view
@@ -0,0 +1,8 @@+#if __GLASGOW_HASKELL__ >= 710+#define OVERLAPPABLE_ {-# OVERLAPPABLE #-}+#define OVERLAPPING_  {-# OVERLAPPING #-}+#else+{-# LANGUAGE OverlappingInstances #-}+#define OVERLAPPABLE_+#define OVERLAPPING_+#endif
servant-cassava.cabal view
@@ -2,18 +2,18 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                servant-cassava-version:             0.4.4.7+version:             0.5 synopsis:            Servant CSV content-type for cassava -- description: homepage:            http://haskell-servant.github.io/ license:             BSD3 license-file:        LICENSE-author:              Julian K. Arni-maintainer:          jkarni@gmail.com--- copyright:+author:              Servant Contributors+maintainer:          haskell-servant-maintainers@googlegroups.com+copyright:           2015-2016 Servant Contributors -- category: build-type:          Simple--- extra-source-files:+extra-source-files:  include/*.h cabal-version:       >=1.10  library@@ -22,8 +22,9 @@   -- other-extensions:   build-depends:       base >=4.6 && <5                      , cassava >0.4 && <0.5-                     , servant == 0.4.*+                     , servant ==0.5.*                      , http-media                      , vector   hs-source-dirs:      src   default-language:    Haskell2010+  include-dirs: include
src/Servant/CSV/Cassava.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP                   #-} {-# LANGUAGE DeriveDataTypeable    #-} {-# LANGUAGE DeriveGeneric         #-} {-# LANGUAGE FlexibleInstances     #-}@@ -16,10 +17,13 @@ -- >>> type EgDefault = Get '[CSV] [(Int, String)] module Servant.CSV.Cassava where +#if !MIN_VERSION_base(4,8,0)+import           Control.Applicative        ((<$>))+#endif import           Data.Csv import           Data.Proxy         (Proxy (..)) import           Data.Typeable      (Typeable)-import           Data.Vector        (Vector)+import           Data.Vector        (Vector, toList) import           GHC.Generics       (Generic) import qualified Network.HTTP.Media as M import           Servant.API        (Accept (..), MimeRender (..),@@ -50,7 +54,19 @@     mimeRender _ = encodeDefaultOrderedByNameWith (encodeOpts p)       where p = Proxy :: Proxy opt +-- | Encode with 'encodeByNameWith'. The 'Header' param is used for determining+-- the order of headers and fields.+instance ( ToNamedRecord a, EncodeOpts opt+         ) => MimeRender (CSV', opt) (Header, Vector a) where+    mimeRender _ (hdr, vals) = encodeByNameWith (encodeOpts p) hdr (toList vals)+      where p = Proxy :: Proxy opt +-- | Encode with 'encodeDefaultOrderedByNameWith'+instance ( DefaultOrdered a, ToNamedRecord a, EncodeOpts opt+         ) => MimeRender (CSV', opt) (Vector a) where+    mimeRender _ = encodeDefaultOrderedByNameWith (encodeOpts p) . toList+      where p = Proxy :: Proxy opt+ -- ** Encode Options  class EncodeOpts a where@@ -66,6 +82,17 @@ -- ** Instances  -- | Decode with 'decodeByNameWith'+instance ( FromNamedRecord a, DecodeOpts opt+         ) => MimeUnrender (CSV', opt) (Header, [a]) where+    mimeUnrender _ bs = fmap toList <$> decodeByNameWith (decodeOpts p) bs+      where p = Proxy :: Proxy opt++-- | Decode with 'decodeWith'. Assumes data has headers, which are stripped.+instance ( FromRecord a, DecodeOpts opt+         ) => MimeUnrender (CSV', opt) [a] where+    mimeUnrender _ bs = toList <$> decodeWith (decodeOpts p) HasHeader bs+      where p = Proxy :: Proxy opt+ instance ( FromNamedRecord a, DecodeOpts opt          ) => MimeUnrender (CSV', opt) (Header, Vector a) where     mimeUnrender _ = decodeByNameWith (decodeOpts p)