generic-aeson 0.2.0.7 → 0.2.0.8
raw patch · 4 files changed
+34/−6 lines, 4 filesdep ~aesondep ~basedep ~generic-derivingPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, base, generic-deriving, vector
API changes (from Hackage documentation)
- Generics.Generic.Aeson: instance [overlap ok] (Constructor c, GfromJson f) => GfromJson (M1 C c f)
- Generics.Generic.Aeson: instance [overlap ok] (Constructor c, GtoJson f) => GtoJson (M1 C c f)
- Generics.Generic.Aeson: instance [overlap ok] (GfromJson f, GfromJson g) => GfromJson (f :*: g)
- Generics.Generic.Aeson: instance [overlap ok] (GfromJson f, GfromJson g) => GfromJson (f :+: g)
- Generics.Generic.Aeson: instance [overlap ok] (GtoJson f, GtoJson g) => GtoJson (f :*: g)
- Generics.Generic.Aeson: instance [overlap ok] (GtoJson f, GtoJson g) => GtoJson (f :+: g)
- Generics.Generic.Aeson: instance [overlap ok] (Selector c, FromJSON a) => GfromJson (M1 S c (K1 i (Maybe a)))
- Generics.Generic.Aeson: instance [overlap ok] (Selector c, GfromJson f) => GfromJson (M1 S c f)
- Generics.Generic.Aeson: instance [overlap ok] (Selector c, GtoJson f) => GtoJson (M1 S c f)
- Generics.Generic.Aeson: instance [overlap ok] (Selector c, ToJSON a) => GtoJson (M1 S c (K1 i (Maybe a)))
- Generics.Generic.Aeson: instance [overlap ok] FromJSON c => GfromJson (K1 a c)
- Generics.Generic.Aeson: instance [overlap ok] GfromJson U1
- Generics.Generic.Aeson: instance [overlap ok] GfromJson f => GfromJson (M1 D c f)
- Generics.Generic.Aeson: instance [overlap ok] GtoJson U1
- Generics.Generic.Aeson: instance [overlap ok] GtoJson f => GtoJson (M1 D c f)
- Generics.Generic.Aeson: instance [overlap ok] ToJSON c => GtoJson (K1 a c)
- Generics.Generic.Aeson: stripPrefix :: Settings -> Maybe String
- Generics.Generic.Aeson.Util: instance Show Settings
- Generics.Generic.Aeson.Util: stripPrefix :: Settings -> Maybe String
- Generics.Generic.IsEnum: instance (GIsEnum f, GIsEnum g) => GIsEnum (f :*: g)
- Generics.Generic.IsEnum: instance (GIsEnum f, GIsEnum g) => GIsEnum (f :+: g)
- Generics.Generic.IsEnum: instance GIsEnum (K1 i a)
- Generics.Generic.IsEnum: instance GIsEnum (M1 S c a)
- Generics.Generic.IsEnum: instance GIsEnum (Rec1 f)
- Generics.Generic.IsEnum: instance GIsEnum Par1
- Generics.Generic.IsEnum: instance GIsEnum U1
- Generics.Generic.IsEnum: instance GIsEnum V1
- Generics.Generic.IsEnum: instance GIsEnum f => GIsEnum (M1 C c f)
- Generics.Generic.IsEnum: instance GIsEnum f => GIsEnum (M1 D c f)
+ Generics.Generic.Aeson: [stripPrefix] :: Settings -> Maybe String
+ Generics.Generic.Aeson: instance (GHC.Generics.Constructor c, Generics.Generic.Aeson.GfromJson f) => Generics.Generic.Aeson.GfromJson (GHC.Generics.M1 GHC.Generics.C c f)
+ Generics.Generic.Aeson: instance (GHC.Generics.Constructor c, Generics.Generic.Aeson.GtoJson f) => Generics.Generic.Aeson.GtoJson (GHC.Generics.M1 GHC.Generics.C c f)
+ Generics.Generic.Aeson: instance (GHC.Generics.Selector c, Data.Aeson.Types.Class.FromJSON a) => Generics.Generic.Aeson.GfromJson (GHC.Generics.M1 GHC.Generics.S c (GHC.Generics.K1 i (GHC.Base.Maybe a)))
+ Generics.Generic.Aeson: instance (GHC.Generics.Selector c, Data.Aeson.Types.Class.ToJSON a) => Generics.Generic.Aeson.GtoJson (GHC.Generics.M1 GHC.Generics.S c (GHC.Generics.K1 i (GHC.Base.Maybe a)))
+ Generics.Generic.Aeson: instance (GHC.Generics.Selector c, Generics.Generic.Aeson.GfromJson f) => Generics.Generic.Aeson.GfromJson (GHC.Generics.M1 GHC.Generics.S c f)
+ Generics.Generic.Aeson: instance (GHC.Generics.Selector c, Generics.Generic.Aeson.GtoJson f) => Generics.Generic.Aeson.GtoJson (GHC.Generics.M1 GHC.Generics.S c f)
+ Generics.Generic.Aeson: instance (Generics.Generic.Aeson.GfromJson f, Generics.Generic.Aeson.GfromJson g) => Generics.Generic.Aeson.GfromJson (f GHC.Generics.:*: g)
+ Generics.Generic.Aeson: instance (Generics.Generic.Aeson.GfromJson f, Generics.Generic.Aeson.GfromJson g) => Generics.Generic.Aeson.GfromJson (f GHC.Generics.:+: g)
+ Generics.Generic.Aeson: instance (Generics.Generic.Aeson.GtoJson f, Generics.Generic.Aeson.GtoJson g) => Generics.Generic.Aeson.GtoJson (f GHC.Generics.:*: g)
+ Generics.Generic.Aeson: instance (Generics.Generic.Aeson.GtoJson f, Generics.Generic.Aeson.GtoJson g) => Generics.Generic.Aeson.GtoJson (f GHC.Generics.:+: g)
+ Generics.Generic.Aeson: instance Data.Aeson.Types.Class.FromJSON c => Generics.Generic.Aeson.GfromJson (GHC.Generics.K1 a c)
+ Generics.Generic.Aeson: instance Data.Aeson.Types.Class.ToJSON c => Generics.Generic.Aeson.GtoJson (GHC.Generics.K1 a c)
+ Generics.Generic.Aeson: instance Generics.Generic.Aeson.GfromJson GHC.Generics.U1
+ Generics.Generic.Aeson: instance Generics.Generic.Aeson.GfromJson f => Generics.Generic.Aeson.GfromJson (GHC.Generics.M1 GHC.Generics.D c f)
+ Generics.Generic.Aeson: instance Generics.Generic.Aeson.GtoJson GHC.Generics.U1
+ Generics.Generic.Aeson: instance Generics.Generic.Aeson.GtoJson f => Generics.Generic.Aeson.GtoJson (GHC.Generics.M1 GHC.Generics.D c f)
+ Generics.Generic.Aeson.Util: [stripPrefix] :: Settings -> Maybe String
+ Generics.Generic.Aeson.Util: instance GHC.Show.Show Generics.Generic.Aeson.Util.Settings
+ Generics.Generic.IsEnum: instance (Generics.Generic.IsEnum.GIsEnum f, Generics.Generic.IsEnum.GIsEnum g) => Generics.Generic.IsEnum.GIsEnum (f GHC.Generics.:*: g)
+ Generics.Generic.IsEnum: instance (Generics.Generic.IsEnum.GIsEnum f, Generics.Generic.IsEnum.GIsEnum g) => Generics.Generic.IsEnum.GIsEnum (f GHC.Generics.:+: g)
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum (GHC.Generics.K1 i a)
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum (GHC.Generics.M1 GHC.Generics.S c a)
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum (GHC.Generics.Rec1 f)
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum GHC.Generics.Par1
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum GHC.Generics.U1
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum GHC.Generics.V1
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum f => Generics.Generic.IsEnum.GIsEnum (GHC.Generics.M1 GHC.Generics.C c f)
+ Generics.Generic.IsEnum: instance Generics.Generic.IsEnum.GIsEnum f => Generics.Generic.IsEnum.GIsEnum (GHC.Generics.M1 GHC.Generics.D c f)
Files
- CHANGELOG.md +5/−0
- generic-aeson.cabal +5/−5
- src/Generics/Generic/Aeson.hs +12/−1
- src/Generics/Generic/Aeson/Util.hs +12/−0
CHANGELOG.md view
@@ -1,8 +1,13 @@ # Changelog +#### 0.2.0.8++* Fix compilation on GHC 8.+ #### 0.2.0.7 * Allow `generic-deriving 1.8.*`+* Allow `vector 0.11.*` #### 0.2.0.6
generic-aeson.cabal view
@@ -1,5 +1,5 @@ name: generic-aeson-version: 0.2.0.7+version: 0.2.0.8 synopsis: Derivation of Aeson instances using GHC generics. description: Derivation of Aeson instances using GHC generics. author: Silk@@ -27,14 +27,14 @@ Generics.Generic.Aeson.Util Generics.Generic.IsEnum build-depends:- base >= 4.4 && < 4.9- , aeson >= 0.6 && < 0.10+ base >= 4.4 && < 4.10+ , aeson >= 0.6 && < 0.12 , attoparsec >= 0.11 && < 0.14- , generic-deriving >= 1.6 && < 1.9+ , generic-deriving >= 1.6 && < 1.11 , mtl >= 2.0 && < 2.3 , tagged >= 0.2 && < 0.9 , text >= 0.11 && < 1.3 , unordered-containers == 0.2.*- , vector == 0.10.*+ , vector >= 0.10 && < 0.12 if impl(ghc < 7.6) build-depends: ghc-prim
src/Generics/Generic/Aeson.hs view
@@ -2,12 +2,14 @@ CPP , FlexibleContexts , FlexibleInstances- , OverlappingInstances , OverloadedStrings , ScopedTypeVariables , TupleSections , TypeOperators #-}+#if __GLASGOW_HASKELL__ < 710+{-# LANGUAGE OverlappingInstances #-}+#endif -- | This module offers generic conversions to an from JSON 'Value's -- for data types with a 'Generic' instance. --@@ -201,12 +203,21 @@ where propName = selNameT set (undefined :: M1 S c f p) +#if __GLASGOW_HASKELL__ >= 710+instance {-# OVERLAPPING #-} (Selector c, ToJSON a) => GtoJson (M1 S c (K1 i (Maybe a))) where+#else instance (Selector c, ToJSON a) => GtoJson (M1 S c (K1 i (Maybe a))) where+#endif gtoJSONf set _ _ (M1 (K1 n@Nothing)) = case selNameT set (undefined :: M1 S c f p) of Nothing -> Left [toJSON n] Just _ -> Right [] gtoJSONf set mc enm (M1 (K1 (Just x))) = gtoJSONf set mc enm (M1 (K1 x) :: (M1 S c (K1 i a)) p)++#if __GLASGOW_HASKELL__ >= 710+instance {-# OVERLAPPING #-} (Selector c, FromJSON a) => GfromJson (M1 S c (K1 i (Maybe a))) where+#else instance (Selector c, FromJSON a) => GfromJson (M1 S c (K1 i (Maybe a))) where+#endif gparseJSONf set mc smf enm = do M1 (K1 x) <- parser return (M1 (K1 (Just x)))
src/Generics/Generic/Aeson/Util.hs view
@@ -3,7 +3,11 @@ , OverloadedStrings , ScopedTypeVariables , TypeFamilies+ , CPP #-}+#if MIN_VERSION_base(4,9,0)+{-# LANGUAGE DataKinds #-}+#endif -- | Helper functions that can be reused by libraries interoperating with generic-aeson. module Generics.Generic.Aeson.Util ( formatLabel@@ -24,10 +28,18 @@ import Generics.Generic.IsEnum +#if MIN_VERSION_base(4,9,0)+conNameT :: forall (t :: * -> Meta -> (* -> *) -> * -> *) i c (f :: * -> *) p. Constructor c => Settings -> t i c f p -> Text+#else conNameT :: forall c (t :: * -> (* -> *) -> * -> *) (f :: * -> *) a. Constructor c => Settings -> t c f a -> Text+#endif conNameT set x = formatLabel set . T.pack . conName $ x +#if MIN_VERSION_base(4,9,0)+selNameT :: forall (t :: * -> Meta -> (* -> *) -> * -> *) i s (f :: * -> *) p. Selector s => Settings -> t i s f p -> Maybe Text+#else selNameT :: forall s (t :: * -> (* -> *) -> * -> *) (f :: * -> *) a. Selector s => Settings -> t s f a -> Maybe Text+#endif selNameT set x = case formatLabel set . T.pack . selName $ x of "" -> Nothing n -> Just n