aboutsummaryrefslogtreecommitdiff
path: root/AesonUtils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'AesonUtils.hs')
-rw-r--r--AesonUtils.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/AesonUtils.hs b/AesonUtils.hs
new file mode 100644
index 0000000..f7b19ad
--- /dev/null
+++ b/AesonUtils.hs
@@ -0,0 +1,25 @@
+{-
+ - Copyright (C) 2023 University of Luxembourg
+ -
+ - Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ - use this file except in compliance with the License. You may obtain a copy
+ - of the License from the LICENSE file in this repository, or at:
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing, software
+ - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ - License for the specific language governing permissions and limitations
+ - under the License.
+ -}
+module AesonUtils where
+
+import qualified Data.Aeson as A
+import qualified Data.Aeson.KeyMap as KM
+
+-- | A bit like `lodashMerge` from aeson-extra, but replaces the arrays. Right
+-- argument overwrites the left one.
+objMerge :: A.Value -> A.Value -> A.Value
+objMerge (A.Object a) (A.Object b) = A.Object $ KM.unionWith objMerge a b
+objMerge _ b = b