{-# LANGUAGE CPP #-} module Test.Sandwich.Contexts.Kubernetes.Util.Aeson where import qualified Data.Aeson as A import Data.Char import qualified Data.List as L import Data.Text hiding (toLower) import Relude #if MIN_VERSION_aeson(2,0,0) import qualified Data.Aeson.Key as A import qualified Data.Aeson.KeyMap as HM #else import Data.Hashable import qualified Data.HashMap.Strict as HM #endif textKeys :: A.Object -> [Text] #if MIN_VERSION_aeson(2,0,0) textKeys :: Object -> [Text] textKeys = (Key -> Text) -> [Key] -> [Text] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Key -> Text A.toText ([Key] -> [Text]) -> (Object -> [Key]) -> Object -> [Text] forall b c a. (b -> c) -> (a -> b) -> a -> c . Object -> [Key] forall v. KeyMap v -> [Key] HM.keys #else textKeys = HM.keys #endif #if MIN_VERSION_aeson(2,0,0) aesonLookup :: Text -> HM.KeyMap v -> Maybe v aesonLookup :: forall v. Text -> KeyMap v -> Maybe v aesonLookup = Key -> KeyMap v -> Maybe v forall v. Key -> KeyMap v -> Maybe v HM.lookup (Key -> KeyMap v -> Maybe v) -> (Text -> Key) -> Text -> KeyMap v -> Maybe v forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> Key A.fromText #else aesonLookup :: (Eq k, Hashable k) => k -> HM.HashMap k v -> Maybe v aesonLookup = HM.lookup #endif #if MIN_VERSION_aeson(2,0,0) aesonInsert :: Text -> v -> HM.KeyMap v -> HM.KeyMap v aesonInsert :: forall v. Text -> v -> KeyMap v -> KeyMap v aesonInsert Text t = Key -> v -> KeyMap v -> KeyMap v forall v. Key -> v -> KeyMap v -> KeyMap v HM.insert (Text -> Key A.fromText Text t) #else aesonInsert :: (Eq k, Hashable k) => k -> v -> HM.HashMap k v -> HM.HashMap k v aesonInsert = HM.insert #endif #if MIN_VERSION_aeson(2,0,0) aesonDelete :: Text -> HM.KeyMap v -> HM.KeyMap v aesonDelete :: forall v. Text -> KeyMap v -> KeyMap v aesonDelete Text t = Key -> KeyMap v -> KeyMap v forall v. Key -> KeyMap v -> KeyMap v HM.delete (Text -> Key A.fromText Text t) #else aesonDelete :: (Eq k, Hashable k) => k -> HM.HashMap k v -> HM.HashMap k v aesonDelete = HM.delete #endif #if MIN_VERSION_aeson(2,0,0) aesonToList :: HM.KeyMap v -> [(A.Key, v)] aesonToList :: forall v. KeyMap v -> [(Key, v)] aesonToList = KeyMap v -> [(Key, v)] forall v. KeyMap v -> [(Key, v)] HM.toList #else aesonToList :: HM.HashMap k v -> [(k, v)] aesonToList = HM.toList #endif dropNAndCamelCase :: Int -> String -> String dropNAndCamelCase :: Int -> String -> String dropNAndCamelCase Int n = String -> String lowercaseFirst (String -> String) -> (String -> String) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> String -> String forall a. Int -> [a] -> [a] L.drop Int n lowercaseFirst :: [Char] -> [Char] lowercaseFirst :: String -> String lowercaseFirst (Char x:String xs) = (Char -> Char toLower Char x) Char -> String -> String forall a. a -> [a] -> [a] : String xs lowercaseFirst [] = []