{-# LANGUAGE CPP #-}
module Data.Aeson.Schema.Utils.Compat (
Key,
keyToText,
KeyMap,
KeyMap.singleton,
KeyMap.fromList,
KeyMap.lookup,
unions,
) where
import Data.List (foldl')
import Data.Text (Text)
import Prelude hiding (lookup)
#if MIN_VERSION_aeson(2,0,0)
import Data.Aeson.Key (Key)
import qualified Data.Aeson.Key as Key
import Data.Aeson.KeyMap (KeyMap)
import qualified Data.Aeson.KeyMap as KeyMap
keyToText :: Key -> Text
keyToText :: Key -> Text
keyToText = Key -> Text
Key.toText
#else
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as KeyMap
type Key = Text
type KeyMap = HashMap Key
keyToText :: Key -> Text
keyToText = id
#endif
unions :: [KeyMap v] -> KeyMap v
unions :: forall v. [KeyMap v] -> KeyMap v
unions = (KeyMap v -> KeyMap v -> KeyMap v)
-> KeyMap v -> [KeyMap v] -> KeyMap v
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' KeyMap v -> KeyMap v -> KeyMap v
forall v. KeyMap v -> KeyMap v -> KeyMap v
KeyMap.union KeyMap v
forall v. KeyMap v
KeyMap.empty