aboutsummaryrefslogtreecommitdiffstats
path: root/src/Data/JLD/Util.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/JLD/Util.hs')
-rw-r--r--src/Data/JLD/Util.hs19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/Data/JLD/Util.hs b/src/Data/JLD/Util.hs
index 82cbdee..26b2755 100644
--- a/src/Data/JLD/Util.hs
+++ b/src/Data/JLD/Util.hs
@@ -1,7 +1,6 @@
1module Data.JLD.Util ( 1module Data.JLD.Util (
2 valueContains, 2 valueContains,
3 valueContainsAny, 3 valueContainsAny,
4 valueIsTrue,
5 valueIsString, 4 valueIsString,
6 valueIsArray, 5 valueIsArray,
7 valueIsNotArray, 6 valueIsNotArray,
@@ -9,9 +8,9 @@ module Data.JLD.Util (
9 valueIsScalar, 8 valueIsScalar,
10 valueToString, 9 valueToString,
11 valueIsNotString, 10 valueIsNotString,
12 valueIsNotNull,
13 flattenSingletonArray, 11 flattenSingletonArray,
14 valueToArray, 12 valueToArray,
13 valueToNonNullArray,
15 allStrings, 14 allStrings,
16 ifindM, 15 ifindM,
17 getMapDefault, 16 getMapDefault,
@@ -26,7 +25,7 @@ import Data.Aeson.KeyMap qualified as KM (insert, lookup, member)
26import Data.Foldable qualified as F (Foldable (..), elem) 25import Data.Foldable qualified as F (Foldable (..), elem)
27import Data.Foldable.WithIndex (FoldableWithIndex (..), ifoldlM) 26import Data.Foldable.WithIndex (FoldableWithIndex (..), ifoldlM)
28import Data.Vector (Vector) 27import Data.Vector (Vector)
29import Data.Vector qualified as V (fromList, null, singleton, snoc, uncons) 28import Data.Vector qualified as V (filter, fromList, null, singleton, snoc, uncons)
30 29
31valueContains :: Text -> Value -> Bool 30valueContains :: Text -> Value -> Bool
32valueContains text = \case 31valueContains text = \case
@@ -42,10 +41,6 @@ valueContainsAny texts = \case
42 Object o -> any (\text -> KM.member (K.fromText text) o) texts 41 Object o -> any (\text -> KM.member (K.fromText text) o) texts
43 _ -> False 42 _ -> False
44 43
45valueIsTrue :: Value -> Bool
46valueIsTrue (Bool True) = True
47valueIsTrue _ = False
48
49valueIsString :: Value -> Bool 44valueIsString :: Value -> Bool
50valueIsString (String _) = True 45valueIsString (String _) = True
51valueIsString _ = False 46valueIsString _ = False
@@ -75,10 +70,6 @@ valueToString :: Value -> Maybe Text
75valueToString (String s) = Just s 70valueToString (String s) = Just s
76valueToString _ = Nothing 71valueToString _ = Nothing
77 72
78valueIsNotNull :: Value -> Bool
79valueIsNotNull Null = False
80valueIsNotNull _ = True
81
82flattenSingletonArray :: Value -> Value 73flattenSingletonArray :: Value -> Value
83flattenSingletonArray = \case 74flattenSingletonArray = \case
84 Array (V.uncons -> Just (value, V.null -> True)) -> value 75 Array (V.uncons -> Just (value, V.null -> True)) -> value
@@ -89,6 +80,12 @@ valueToArray = \case
89 Array a -> a 80 Array a -> a
90 value -> V.singleton value 81 value -> V.singleton value
91 82
83valueToNonNullArray :: Value -> Array
84valueToNonNullArray = \case
85 Null -> mempty
86 Array a -> V.filter (/= Null) a
87 value -> V.singleton value
88
92allStrings :: Array -> Maybe (Vector Text) 89allStrings :: Array -> Maybe (Vector Text)
93allStrings = foldl' go (Just mempty) 90allStrings = foldl' go (Just mempty)
94 where 91 where