aeson-lens 0.4.1.1 → 0.5.0.0
raw patch · 2 files changed
+16/−16 lines, 2 filesdep ~lensPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: lens
API changes (from Hackage documentation)
- Data.Aeson.Lens: asBool :: SimpleLens (Maybe Value) (Maybe Bool)
+ Data.Aeson.Lens: asBool :: Lens' (Maybe Value) (Maybe Bool)
- Data.Aeson.Lens: asDouble :: SimpleLens (Maybe Value) (Maybe Double)
+ Data.Aeson.Lens: asDouble :: Lens' (Maybe Value) (Maybe Double)
- Data.Aeson.Lens: asText :: SimpleLens (Maybe Value) (Maybe Text)
+ Data.Aeson.Lens: asText :: Lens' (Maybe Value) (Maybe Text)
- Data.Aeson.Lens: key :: (FromJSON v, ToJSON v) => Text -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)
+ Data.Aeson.Lens: key :: (FromJSON v, ToJSON v) => Text -> IndexedLens' ValueIx (Maybe Value) (Maybe v)
- Data.Aeson.Lens: nth :: (FromJSON v, ToJSON v) => Int -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)
+ Data.Aeson.Lens: nth :: (FromJSON v, ToJSON v) => Int -> IndexedLens' ValueIx (Maybe Value) (Maybe v)
- Data.Aeson.Lens: traverseArray :: (FromJSON v, ToJSON v) => SimpleIndexedTraversal Int (Maybe Value) (Maybe v)
+ Data.Aeson.Lens: traverseArray :: (FromJSON v, ToJSON v) => IndexedTraversal' Int (Maybe Value) (Maybe v)
- Data.Aeson.Lens: traverseObject :: (FromJSON v, ToJSON v) => SimpleIndexedTraversal Text (Maybe Value) (Maybe v)
+ Data.Aeson.Lens: traverseObject :: (FromJSON v, ToJSON v) => IndexedTraversal' Text (Maybe Value) (Maybe v)
Files
- Data/Aeson/Lens.hs +14/−14
- aeson-lens.cabal +2/−2
Data/Aeson/Lens.hs view
@@ -42,7 +42,7 @@ valueAt :: (FromJSON u, ToJSON v) => ValueIx -> IndexedLens ValueIx (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)-valueAt k = indexed $ \f (fmap toJSON -> v) -> go k v <$> f k (lu k v) where+valueAt k f (fmap toJSON -> v) = go k v <$> indexed f k (lu k v) where go (ObjIx ix) (Just (Object o)) Nothing = Just $ Object $ HMS.delete ix o go (ObjIx ix) (Just (Object o)) (Just v) = Just $ Object $ HMS.insert ix (toJSON v) o go (ObjIx ix) _ (Just v) = Just $ Object $ HMS.fromList [(ix, toJSON v)]@@ -99,7 +99,7 @@ nth :: (FromJSON v, ToJSON v) => Int- -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)+ -> IndexedLens' ValueIx (Maybe Value) (Maybe v) nth = nth' {-# INLINE nth #-} @@ -128,7 +128,7 @@ -- "{\"b\":{\"c\":true},\"a\":2.23}" key :: (FromJSON v, ToJSON v) => T.Text- -> SimpleIndexedLens ValueIx (Maybe Value) (Maybe v)+ -> IndexedLens' ValueIx (Maybe Value) (Maybe v) key = key' {-# INLINE key #-} @@ -147,16 +147,16 @@ -- >>> w & catMaybes . toListOf (traverseArray . key (T.pack "name")) :: [T.Text] -- ["tanakh","nushio"] traverseArray :: (FromJSON v, ToJSON v)- => SimpleIndexedTraversal Int (Maybe Value) (Maybe v)+ => IndexedTraversal' Int (Maybe Value) (Maybe v) traverseArray = traverseArray' {-# INLINE traverseArray #-} -- | Type-changing indexed traversal of an Array traverseArray' :: (FromJSON u, ToJSON v) => IndexedTraversal Int (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)-traverseArray' = indexed $ \f m -> case m of+traverseArray' f m = case m of Just (Array (map fromJSONMaybe . V.toList -> v)) ->- Just . Array . V.fromList . map toJSON . catMaybes <$> itraverse f v+ Just . Array . V.fromList . map toJSON . catMaybes <$> itraverse (indexed f) v v -> pure v {-# INLINE traverseArray' #-} @@ -166,16 +166,16 @@ -- >>> w & catMaybes . toListOf (traverseArray . traverseObject) :: [Value] -- [String "tanakh",Number 29,String "nushio",Number 28] traverseObject :: (FromJSON v, ToJSON v)- => SimpleIndexedTraversal T.Text (Maybe Value) (Maybe v)+ => IndexedTraversal' T.Text (Maybe Value) (Maybe v) traverseObject = traverseObject' {-# INLINE traverseObject #-} -- | Type-changing indexed traversal of Object traverseObject' :: (FromJSON u, ToJSON v) => IndexedTraversal T.Text (Maybe Value) (Maybe Value) (Maybe u) (Maybe v)-traverseObject' = indexed $ \f m -> case m of+traverseObject' f m = case m of Just (Object (expand . HMS.toList -> v)) ->- Just . Object . HMS.fromList . catMaybes . collapse <$> withIndex traverseAssocList f v+ Just . Object . HMS.fromList . catMaybes . collapse <$> traverseAssocList f v v -> pure v where expand = map (_2 %~ fromJSONMaybe)@@ -183,7 +183,7 @@ {-# INLINE traverseObject' #-} traverseAssocList :: IndexedTraversal k [(k, u)] [(k, v)] u v-traverseAssocList = indexed $ \f m -> go f m where+traverseAssocList f m = go (indexed f) m where go _ [] = pure [] go f ((k, v): xs) = (\v' ys -> (k, v') : ys) <$> f k v <*> go f xs {-# INLINE traverseAssocList #-}@@ -197,7 +197,7 @@ -- Nothing -- >>> v ^. key (T.pack "hoge") . asDouble -- Nothing-asDouble :: SimpleLens (Maybe Value) (Maybe Double)+asDouble :: Lens' (Maybe Value) (Maybe Double) asDouble = as {-# INLINE asDouble #-} @@ -210,7 +210,7 @@ -- Nothing -- >>> v ^. key (T.pack "hoge") . asText -- Nothing-asText :: SimpleLens (Maybe Value) (Maybe T.Text)+asText :: Lens' (Maybe Value) (Maybe T.Text) asText = as {-# INLINE asText #-} @@ -223,12 +223,12 @@ -- Nothing -- >>> v ^. key (T.pack "hoge") . asBool -- Nothing-asBool :: SimpleLens (Maybe Value) (Maybe Bool)+asBool :: Lens' (Maybe Value) (Maybe Bool) asBool = as {-# INLINE asBool #-} as :: (ToJSON v, FromJSON v)- => SimpleLens (Maybe Value) (Maybe v)+ => Lens' (Maybe Value) (Maybe v) as f x = toJSON <$$> f (fromJSONMaybe =<< x) where (<$$>) = fmap . fmap
aeson-lens.cabal view
@@ -1,5 +1,5 @@ name: aeson-lens-version: 0.4.1.1+version: 0.5.0.0 synopsis: Lens of Aeson description: Lens of Aeson license: BSD3@@ -19,7 +19,7 @@ exposed-modules: Data.Aeson.Lens build-depends: base >=4.5 && <5 , aeson >=0.6- , lens >=3.7+ , lens >=3.8 , text >=0.11 , bytestring >=0.9 , vector >=0.9