diff options
author | Volpeon <github@volpeon.ink> | 2023-06-24 08:58:22 +0200 |
---|---|---|
committer | Volpeon <github@volpeon.ink> | 2023-06-24 08:58:22 +0200 |
commit | b19440a4a30828f12f8eafaa7292152ecf733334 (patch) | |
tree | 00210fae1f860d76bb5319d10167d744c5d4037d /src/Data/JLD/Model/ListObject.hs | |
parent | Small code optimization (diff) | |
download | hs-jsonld-b19440a4a30828f12f8eafaa7292152ecf733334.tar.gz hs-jsonld-b19440a4a30828f12f8eafaa7292152ecf733334.tar.bz2 hs-jsonld-b19440a4a30828f12f8eafaa7292152ecf733334.zip |
WIP: Compaction
Diffstat (limited to 'src/Data/JLD/Model/ListObject.hs')
-rw-r--r-- | src/Data/JLD/Model/ListObject.hs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/Data/JLD/Model/ListObject.hs b/src/Data/JLD/Model/ListObject.hs index 8dda349..6277d24 100644 --- a/src/Data/JLD/Model/ListObject.hs +++ b/src/Data/JLD/Model/ListObject.hs | |||
@@ -1,24 +1,26 @@ | |||
1 | module Data.JLD.Model.ListObject (isListObject, isNotListObject, toListObject) where | 1 | module Data.JLD.Model.ListObject (isListObject, isListObject', isNotListObject, toListObject) where |
2 | 2 | ||
3 | import Data.JLD.Prelude | 3 | import Data.JLD.Prelude |
4 | 4 | ||
5 | import Data.JLD.Model.Keyword (Keyword (..)) | 5 | import Data.JLD.Model.Keyword (Keyword (..)) |
6 | 6 | ||
7 | import Data.Aeson (Value (..)) | 7 | import Data.Aeson (Object, Value (..)) |
8 | import Data.Aeson.KeyMap qualified as KM | 8 | import Data.Aeson.KeyMap qualified as KM (member, singleton, size) |
9 | import Data.Vector qualified as V | ||
10 | 9 | ||
11 | isListObject :: Value -> Bool | 10 | isListObject :: Value -> Bool |
12 | isListObject (Object o) = | 11 | isListObject (Object o) = isListObject' o |
12 | isListObject _ = False | ||
13 | |||
14 | isListObject' :: Object -> Bool | ||
15 | isListObject' o = | ||
13 | KM.member (show KeywordList) o | 16 | KM.member (show KeywordList) o |
14 | && ( KM.size o == 1 | 17 | && ( KM.size o == 1 |
15 | || (KM.size o == 2 && KM.member (show KeywordIndex) o) | 18 | || (KM.size o == 2 && KM.member (show KeywordIndex) o) |
16 | ) | 19 | ) |
17 | isListObject _ = False | ||
18 | 20 | ||
19 | isNotListObject :: Value -> Bool | 21 | isNotListObject :: Value -> Bool |
20 | isNotListObject = isListObject .> not | 22 | isNotListObject = isListObject .> not |
21 | 23 | ||
22 | toListObject :: Value -> Value | 24 | toListObject :: Value -> Value |
23 | toListObject value@(Array _) = Object <| KM.singleton (show KeywordList) value | 25 | toListObject value@(Array _) = Object <| KM.singleton (show KeywordList) value |
24 | toListObject value = Object <| KM.singleton (show KeywordList) (Array <| V.singleton value) | 26 | toListObject value = Object <| KM.singleton (show KeywordList) (Array <| pure value) |