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 |
