packages feed

aeson-value-parser 0.17.1 → 0.18

raw patch · 2 files changed

+11/−14 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Aeson.ValueParser: foldlFields :: (state -> Text -> field -> state) -> state -> Value field -> Object state
+ Aeson.ValueParser: foldlFields :: (state -> key -> field -> state) -> state -> String key -> Value field -> Object state

Files

aeson-value-parser.cabal view
@@ -1,5 +1,5 @@ name: aeson-value-parser-version: 0.17.1+version: 0.18 synopsis: API for parsing "aeson" JSON tree into Haskell types description:   A flexible parser DSL of JSON AST produced by the \"aeson\" library
library/Aeson/ValueParser.hs view
@@ -135,12 +135,6 @@   Aeson.String x -> lift $ left (Error.message . fromMaybe "No details") $ runExcept $ runReaderT parser x   _ -> empty -{-# INLINE matchedString #-}-matchedString :: (Text -> Either Text a) -> Value a-matchedString parser = Value $ ReaderT $ \ case-  Aeson.String x -> lift $ left Error.message $ parser x-  _ -> empty- {-# INLINE number #-} number :: Number a -> Value a number (Number parser) = Value $ ReaderT $ \ case@@ -258,13 +252,16 @@       Left error -> lift (throwE (maybe mempty Error.message error))  {-# INLINE foldlFields #-}-foldlFields :: (state -> Text -> field -> state) -> state -> Value field -> Object state-foldlFields step state fieldParser = Object $ ReaderT $ \ object -> HashMap.foldlWithKey' newStep (pure state) object where-  newStep stateE key fieldAst = case run fieldParser fieldAst of-    Right !parsedField -> do-      !state <- stateE-      return $ step state key parsedField-    Left error -> lift (throwE (Error.named key error))+foldlFields :: (state -> key -> field -> state) -> state -> String key -> Value field -> Object state+foldlFields step state keyParser fieldParser = Object $ ReaderT $ \ object -> HashMap.foldlWithKey' newStep (pure state) object where+  newStep stateE key fieldAst = +    case runString keyParser key of+      Right !parsedKey -> case run fieldParser fieldAst of+        Right !parsedField -> do+          !state <- stateE+          return $ step state parsedKey parsedField+        Left error -> lift (throwE (Error.named key error))+      Left error -> lift (throwE (maybe mempty Error.message error))   -- * Array parsers