diff options
Diffstat (limited to 'src/Data/JLD/Util.hs')
-rw-r--r-- | src/Data/JLD/Util.hs | 19 |
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 @@ | |||
1 | module Data.JLD.Util ( | 1 | module 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) | |||
26 | import Data.Foldable qualified as F (Foldable (..), elem) | 25 | import Data.Foldable qualified as F (Foldable (..), elem) |
27 | import Data.Foldable.WithIndex (FoldableWithIndex (..), ifoldlM) | 26 | import Data.Foldable.WithIndex (FoldableWithIndex (..), ifoldlM) |
28 | import Data.Vector (Vector) | 27 | import Data.Vector (Vector) |
29 | import Data.Vector qualified as V (fromList, null, singleton, snoc, uncons) | 28 | import Data.Vector qualified as V (filter, fromList, null, singleton, snoc, uncons) |
30 | 29 | ||
31 | valueContains :: Text -> Value -> Bool | 30 | valueContains :: Text -> Value -> Bool |
32 | valueContains text = \case | 31 | valueContains 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 | ||
45 | valueIsTrue :: Value -> Bool | ||
46 | valueIsTrue (Bool True) = True | ||
47 | valueIsTrue _ = False | ||
48 | |||
49 | valueIsString :: Value -> Bool | 44 | valueIsString :: Value -> Bool |
50 | valueIsString (String _) = True | 45 | valueIsString (String _) = True |
51 | valueIsString _ = False | 46 | valueIsString _ = False |
@@ -75,10 +70,6 @@ valueToString :: Value -> Maybe Text | |||
75 | valueToString (String s) = Just s | 70 | valueToString (String s) = Just s |
76 | valueToString _ = Nothing | 71 | valueToString _ = Nothing |
77 | 72 | ||
78 | valueIsNotNull :: Value -> Bool | ||
79 | valueIsNotNull Null = False | ||
80 | valueIsNotNull _ = True | ||
81 | |||
82 | flattenSingletonArray :: Value -> Value | 73 | flattenSingletonArray :: Value -> Value |
83 | flattenSingletonArray = \case | 74 | flattenSingletonArray = \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 | ||
83 | valueToNonNullArray :: Value -> Array | ||
84 | valueToNonNullArray = \case | ||
85 | Null -> mempty | ||
86 | Array a -> V.filter (/= Null) a | ||
87 | value -> V.singleton value | ||
88 | |||
92 | allStrings :: Array -> Maybe (Vector Text) | 89 | allStrings :: Array -> Maybe (Vector Text) |
93 | allStrings = foldl' go (Just mempty) | 90 | allStrings = foldl' go (Just mempty) |
94 | where | 91 | where |