diff options
Diffstat (limited to 'src/Data/JLD/Model/ListObject.hs')
-rw-r--r-- | src/Data/JLD/Model/ListObject.hs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/Data/JLD/Model/ListObject.hs b/src/Data/JLD/Model/ListObject.hs new file mode 100644 index 0000000..8dda349 --- /dev/null +++ b/src/Data/JLD/Model/ListObject.hs | |||
@@ -0,0 +1,24 @@ | |||
1 | module Data.JLD.Model.ListObject (isListObject, isNotListObject, toListObject) where | ||
2 | |||
3 | import Data.JLD.Prelude | ||
4 | |||
5 | import Data.JLD.Model.Keyword (Keyword (..)) | ||
6 | |||
7 | import Data.Aeson (Value (..)) | ||
8 | import Data.Aeson.KeyMap qualified as KM | ||
9 | import Data.Vector qualified as V | ||
10 | |||
11 | isListObject :: Value -> Bool | ||
12 | isListObject (Object o) = | ||
13 | KM.member (show KeywordList) o | ||
14 | && ( KM.size o == 1 | ||
15 | || (KM.size o == 2 && KM.member (show KeywordIndex) o) | ||
16 | ) | ||
17 | isListObject _ = False | ||
18 | |||
19 | isNotListObject :: Value -> Bool | ||
20 | isNotListObject = isListObject .> not | ||
21 | |||
22 | toListObject :: Value -> Value | ||
23 | toListObject value@(Array _) = Object <| KM.singleton (show KeywordList) value | ||
24 | toListObject value = Object <| KM.singleton (show KeywordList) (Array <| V.singleton value) | ||