module Data.JLD.Model.ValueObject (isValueObject, isValueObject', isNotValueObject, isNotValueObject', valueObjectValue) where import Data.JLD.Prelude import Data.JLD.Model.Keyword (Keyword (..), isNotKeyword) import Data.Aeson (Object, Value (..)) import Data.Aeson.Key qualified as K import Data.Aeson.KeyMap qualified as KM isValueObject :: Value -> Bool isValueObject (Object o) = isValueObject' o isValueObject _ = False isValueObject' :: Object -> Bool isValueObject' = KM.member (show KeywordValue) isNotValueObject :: Value -> Bool isNotValueObject (Object o) = isNotValueObject' o isNotValueObject _ = False isNotValueObject' :: Object -> Bool isNotValueObject' = KM.keys .> fmap K.toText .> any (`isNotKeyword` [KeywordType, KeywordValue, KeywordDirection, KeywordLanguage, KeywordIndex]) valueObjectValue :: Value -> Maybe Value valueObjectValue (Object o) = KM.lookup (show KeywordValue) o valueObjectValue _ = Nothing