From 838ed8229ed13959d9235b5eafae959e8b8421c4 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Sat, 27 May 2023 20:36:26 +0200 Subject: Added Node Map Generation algorithm --- src/Data/JLD/Util.hs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'src/Data/JLD/Util.hs') 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 @@ module Data.JLD.Util ( valueContains, valueContainsAny, - valueIsTrue, valueIsString, valueIsArray, valueIsNotArray, @@ -9,9 +8,9 @@ module Data.JLD.Util ( valueIsScalar, valueToString, valueIsNotString, - valueIsNotNull, flattenSingletonArray, valueToArray, + valueToNonNullArray, allStrings, ifindM, getMapDefault, @@ -26,7 +25,7 @@ import Data.Aeson.KeyMap qualified as KM (insert, lookup, member) import Data.Foldable qualified as F (Foldable (..), elem) import Data.Foldable.WithIndex (FoldableWithIndex (..), ifoldlM) import Data.Vector (Vector) -import Data.Vector qualified as V (fromList, null, singleton, snoc, uncons) +import Data.Vector qualified as V (filter, fromList, null, singleton, snoc, uncons) valueContains :: Text -> Value -> Bool valueContains text = \case @@ -42,10 +41,6 @@ valueContainsAny texts = \case Object o -> any (\text -> KM.member (K.fromText text) o) texts _ -> False -valueIsTrue :: Value -> Bool -valueIsTrue (Bool True) = True -valueIsTrue _ = False - valueIsString :: Value -> Bool valueIsString (String _) = True valueIsString _ = False @@ -75,10 +70,6 @@ valueToString :: Value -> Maybe Text valueToString (String s) = Just s valueToString _ = Nothing -valueIsNotNull :: Value -> Bool -valueIsNotNull Null = False -valueIsNotNull _ = True - flattenSingletonArray :: Value -> Value flattenSingletonArray = \case Array (V.uncons -> Just (value, V.null -> True)) -> value @@ -89,6 +80,12 @@ valueToArray = \case Array a -> a value -> V.singleton value +valueToNonNullArray :: Value -> Array +valueToNonNullArray = \case + Null -> mempty + Array a -> V.filter (/= Null) a + value -> V.singleton value + allStrings :: Array -> Maybe (Vector Text) allStrings = foldl' go (Just mempty) where -- cgit v1.2.3-54-g00ecf