hw-aeson-0.1.3.0: src/HaskellWorks/Data/Aeson/Compat.hs
{-# LANGUAGE CPP #-}
module HaskellWorks.Data.Aeson.Compat
( Key
, textToKey
, keyToText
, stringToKey
, keyToString
) where
import Data.Text (Text)
import Data.Text.Short (ShortText)
import qualified Data.Text as T
import qualified Data.Text.Short as ST
#if MIN_VERSION_aeson(2,0,0)
import qualified Data.Aeson.Key as J
#endif
#if MIN_VERSION_aeson(2,0,0)
type Key = J.Key
#else
type Key = Text
#endif
textToKey :: Text -> Key
#if MIN_VERSION_aeson(2,0,0)
textToKey = J.fromText
#else
textToKey = id
#endif
keyToText :: Key -> Text
#if MIN_VERSION_aeson(2,0,0)
keyToText = J.toText
#else
keyToText = id
#endif
stringToKey :: String -> Key
#if MIN_VERSION_aeson(2,0,0)
stringToKey = J.fromString
#else
stringToKey = T.pack
#endif
keyToString :: Key -> String
#if MIN_VERSION_aeson(2,0,0)
keyToString = J.toString
#else
keyToString = T.unpack
#endif
shortTextToKey :: ShortText -> Key
#if MIN_VERSION_aeson(2,0,0)
shortTextToKey = J.fromShortText
#else
shortTextToKey = ST.toText
#endif
keyToShortText :: Key -> ShortText
#if MIN_VERSION_aeson(2,0,0)
keyToShortText = J.toShortText
#else
keyToShortText = ST.fromText
#endif