module Hedgehog.Extras.Stock.Aeson
  ( rewriteObject
  ) where

import           Data.Aeson
import           Data.HashMap.Lazy
import           Data.Text

-- | Rewrite a JSON object to another JSON object using the function 'f'.
--
-- All other JSON values are preserved.
rewriteObject :: (HashMap Text Value -> HashMap Text Value) -> Value -> Value
rewriteObject :: (HashMap Text Value -> HashMap Text Value) -> Value -> Value
rewriteObject HashMap Text Value -> HashMap Text Value
f (Object HashMap Text Value
hm) = HashMap Text Value -> Value
Object (HashMap Text Value -> HashMap Text Value
f HashMap Text Value
hm)
rewriteObject HashMap Text Value -> HashMap Text Value
_ Value
v = Value
v