packages feed

aeson-iproute 0.1.1 → 0.1.2

raw patch · 2 files changed

+52/−2 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Aeson.IP: instance Data.Aeson.Types.Class.FromJSON Data.IP.Addr.IP
- Data.Aeson.IP: instance Data.Aeson.Types.Class.FromJSON Data.IP.Addr.IPv4
- Data.Aeson.IP: instance Data.Aeson.Types.Class.FromJSON Data.IP.Addr.IPv6
- Data.Aeson.IP: instance Data.Aeson.Types.Class.FromJSON Data.IP.Range.IPRange
- Data.Aeson.IP: instance Data.Aeson.Types.Class.ToJSON Data.IP.Addr.IP
- Data.Aeson.IP: instance Data.Aeson.Types.Class.ToJSON Data.IP.Addr.IPv4
- Data.Aeson.IP: instance Data.Aeson.Types.Class.ToJSON Data.IP.Addr.IPv6
- Data.Aeson.IP: instance Data.Aeson.Types.Class.ToJSON Data.IP.Range.IPRange
- Data.Aeson.IP: instance GHC.Read.Read (Data.IP.Range.AddrRange a) => Data.Aeson.Types.Class.FromJSON (Data.IP.Range.AddrRange a)
- Data.Aeson.IP: instance GHC.Show.Show (Data.IP.Range.AddrRange a) => Data.Aeson.Types.Class.ToJSON (Data.IP.Range.AddrRange a)
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSON Data.IP.Addr.IP
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSON Data.IP.Addr.IPv4
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSON Data.IP.Addr.IPv6
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSON Data.IP.Range.IPRange
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSONKey Data.IP.Addr.IP
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSONKey Data.IP.Addr.IPv4
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSONKey Data.IP.Addr.IPv6
+ Data.Aeson.IP: instance Data.Aeson.Types.FromJSON.FromJSONKey Data.IP.Range.IPRange
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSON Data.IP.Addr.IP
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSON Data.IP.Addr.IPv4
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSON Data.IP.Addr.IPv6
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSON Data.IP.Range.IPRange
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSONKey Data.IP.Addr.IP
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSONKey Data.IP.Addr.IPv4
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSONKey Data.IP.Addr.IPv6
+ Data.Aeson.IP: instance Data.Aeson.Types.ToJSON.ToJSONKey Data.IP.Range.IPRange
+ Data.Aeson.IP: instance GHC.Read.Read (Data.IP.Range.AddrRange a) => Data.Aeson.Types.FromJSON.FromJSON (Data.IP.Range.AddrRange a)
+ Data.Aeson.IP: instance GHC.Read.Read (Data.IP.Range.AddrRange a) => Data.Aeson.Types.FromJSON.FromJSONKey (Data.IP.Range.AddrRange a)
+ Data.Aeson.IP: instance GHC.Show.Show a => Data.Aeson.Types.ToJSON.ToJSON (Data.IP.Range.AddrRange a)
+ Data.Aeson.IP: instance GHC.Show.Show a => Data.Aeson.Types.ToJSON.ToJSONKey (Data.IP.Range.AddrRange a)

Files

Data/Aeson/IP.hs view
@@ -19,34 +19,61 @@         | otherwise = fail "Unable to parse"     parseJSON v = typeMismatch "IPv4" v +instance FromJSONKey IPv4 where+    fromJSONKey = FromJSONKeyTextParser $ \t ->+                      case readMaybe (Text.unpack t) of+                          Just r -> pure r+                          Nothing -> fail "Unable to parse IPv4"+ instance ToJSON IPv4 where     toJSON = String . Text.pack . show +instance ToJSONKey IPv4 where+    toJSONKey = toJSONKeyText (Text.pack . show)+ instance FromJSON IPv6 where     parseJSON (String s)         | Just r <- readMaybe (Text.unpack s) = pure r         | otherwise = fail "Unable to parse"     parseJSON v = typeMismatch "IPv6" v +instance FromJSONKey IPv6 where+    fromJSONKey = FromJSONKeyTextParser $ \t ->+                      case readMaybe (Text.unpack t) of+                          Just r -> pure r+                          Nothing -> fail "Unable to parse IPv6"+ instance ToJSON IPv6 where     toJSON = String . Text.pack . show +instance ToJSONKey IPv6 where+    toJSONKey = toJSONKeyText (Text.pack . show)+ instance FromJSON IP where     parseJSON (String s)         | Just r <- readMaybe (Text.unpack s) = pure r         | otherwise = fail "Unable to parse"     parseJSON v = typeMismatch "IP" v +instance FromJSONKey IP where+    fromJSONKey = FromJSONKeyTextParser $ \t ->+                      case readMaybe (Text.unpack t) of+                          Just r -> pure r+                          Nothing -> fail "Unable to parse IP"+ instance ToJSON IP where     toJSON = String . Text.pack . show +instance ToJSONKey IP where+    toJSONKey = toJSONKeyText (Text.pack . show)+ instance Read (AddrRange a) => FromJSON (AddrRange a) where     parseJSON (String s)         | Just r <- readMaybe (Text.unpack s) = pure r         | otherwise = fail "Unable to parse"     parseJSON v = typeMismatch "AddrRange" v -instance Show (AddrRange a) => ToJSON (AddrRange a) where+instance Show a => ToJSON (AddrRange a) where     toJSON = String . Text.pack . show  instance FromJSON IPRange where@@ -58,3 +85,20 @@ instance ToJSON IPRange where     toJSON = String . Text.pack . show +instance Read (AddrRange a) => FromJSONKey (AddrRange a) where+    fromJSONKey = FromJSONKeyTextParser $ \t ->+                      case readMaybe (Text.unpack t) of+                          Just r -> pure r+                          Nothing -> fail "Unable to parse AddrRange"++instance Show a => ToJSONKey (AddrRange a) where+    toJSONKey = toJSONKeyText (Text.pack . show)++instance FromJSONKey IPRange where+    fromJSONKey = FromJSONKeyTextParser $ \t ->+                      case readMaybe (Text.unpack t) of+                          Just r -> pure r+                          Nothing -> fail "Unable to parse IPRange"++instance ToJSONKey IPRange where+    toJSONKey = toJSONKeyText (Text.pack . show)
aeson-iproute.cabal view
@@ -2,8 +2,9 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                aeson-iproute-version:             0.1.1+version:             0.1.2 synopsis:            Aeson instances for iproute types+description:         Aeson instances for iproute types. license:             BSD3 license-file:        LICENSE author:              Lana Black@@ -12,6 +13,7 @@ category:            Data build-type:          Simple cabal-version:       >=1.10+Tested-With: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2  library   exposed-modules:     Data.Aeson.IP@@ -23,3 +25,7 @@                            default-language:    Haskell2010   ghc-options:         -Wall -fno-warn-orphans++source-repository head+  type: git+  location: https://github.com/greydot/aeson-iproute.git