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 +1/−1
- library/Aeson/ValueParser.hs +10/−13
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