]> dgit.raspbian.org Git - git-annex.git/commitdiff
factor out Utility.Aeson.textKey
authorJoey Hess <joeyh@joeyh.name>
Wed, 2 Mar 2022 22:24:06 +0000 (18:24 -0400)
committerJoey Hess <joeyh@joeyh.name>
Wed, 2 Mar 2022 22:24:06 +0000 (18:24 -0400)
Messages/JSON.hs
Remote.hs
Types/MetaData.hs
Utility/Aeson.hs

index 7d9704e503de98f1b025e6f779c77dd96048dfb9..8960dd04a24905adb973cde92d00958dc93d166b 100644 (file)
@@ -34,7 +34,6 @@ import qualified Data.Map as M
 import qualified Data.Vector as V
 import qualified Data.ByteString.Lazy as L
 #if MIN_VERSION_aeson(2,0,0)
-import qualified Data.Aeson.Key as AK
 import qualified Data.Aeson.KeyMap as HM
 #else
 import qualified Data.HashMap.Strict as HM
@@ -132,13 +131,7 @@ add v (Just (o, e)) = case j of
        j = case v of
                AesonObject ao -> Object ao
                JSONChunk l -> object $ map mkPair l
-       mkPair (s, d) =
-               (
-#if MIN_VERSION_aeson(2,0,0)
-                 AK.fromText $
-#endif
-                 packString s
-               , toJSON' d)
+       mkPair (s, d) = (textKey (packString s), toJSON' d)
 add _ Nothing = Nothing
 
 complete :: JSONChunk v -> JSONBuilder
@@ -184,13 +177,7 @@ data ObjectMap a = ObjectMap { fromObjectMap :: M.Map String a }
 instance ToJSON' a => ToJSON' (ObjectMap a) where
        toJSON' (ObjectMap m) = object $ map go $ M.toList m
          where
-               go (k, v) =
-                       (
-#if MIN_VERSION_aeson(2,0,0)
-                         AK.fromText $
-#endif
-                         packString k
-                       , toJSON' v)
+               go (k, v) = (textKey (packString k), toJSON' v)
 
 -- An item that a git-annex command acts on, and displays a JSON object about.
 data JSONActionItem a = JSONActionItem
index 5e6658690f9ac22d2904c369316260ac54b5de66..71181790e67a116616e7247cd24b15f5da9b2256 100644 (file)
--- a/Remote.hs
+++ b/Remote.hs
@@ -5,7 +5,7 @@
  - Licensed under the GNU AGPL version 3 or higher.
  -}
 
-{-# LANGUAGE OverloadedStrings, CPP #-}
+{-# LANGUAGE OverloadedStrings #-}
 
 module Remote (
        Remote,
@@ -63,9 +63,6 @@ module Remote (
 
 import Data.Ord
 import Data.String
-#if MIN_VERSION_aeson(2,0,0)
-import qualified Data.Aeson.Key as AK
-#endif
 import qualified Data.Map as M
 import qualified Data.Vector as V
 
@@ -247,12 +244,7 @@ prettyPrintUUIDsWith optfield header descm showval uuidvals = do
                , Just ("here", toJSON' $ hereu == u)
                , case (optfield, optval) of
                        (Just field, Just val) -> Just
-                               (
-#if MIN_VERSION_aeson(2,0,0)
-                                 AK.fromText $
-#endif
-                                 packString field
-                               , toJSON' val)
+                               (textKey (packString field), toJSON' val)
                        _ -> Nothing
                ]
 
index 7199763d739a4d892f24e1e5b5082fe2b88a3857..7df07a87eb42646103e96b55ad5895e8f67bf99d 100644 (file)
@@ -7,7 +7,6 @@
 
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE CPP #-}
 
 module Types.MetaData (
        MetaData(..),
@@ -52,9 +51,6 @@ import Utility.QuickCheck
 import Utility.Aeson
 import Types.UUID
 
-#if MIN_VERSION_aeson(2,0,0)
-import qualified Data.Aeson.Key as AK
-#endif
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as E
 import qualified Data.Set as S
@@ -71,13 +67,7 @@ newtype MetaData = MetaData (M.Map MetaField (S.Set MetaValue))
 instance ToJSON' MetaData where
        toJSON' (MetaData m) = object $ map go (M.toList m)
          where
-               go (MetaField f, s) =
-                       (
-#if MIN_VERSION_aeson(2,0,0)
-                         AK.fromText $
-#endif
-                         CI.original f
-                       , toJSON' s)
+               go (MetaField f, s) = (textKey (CI.original f), toJSON' s)
 
 instance FromJSON MetaData where
        parseJSON (Object o) = do
index c82bf3583330097948bc938531df0f95747a61ce..462eed1683d88ecdd00d5dd9fe60a665e1a8948b 100644 (file)
@@ -15,11 +15,15 @@ module Utility.Aeson (
        encode,
        packString,
        packByteString,
+       textKey,
 ) where
 
 import Data.Aeson as X hiding (ToJSON, toJSON, encode, Key)
 import Data.Aeson hiding (encode)
 import qualified Data.Aeson
+#if MIN_VERSION_aeson(2,0,0)
+import qualified Data.Aeson.Key as AK
+#endif
 import qualified Data.Text as T
 import qualified Data.Text.Encoding as T
 import qualified Data.ByteString.Lazy as L
@@ -68,6 +72,14 @@ packString s = case T.decodeUtf8' (encodeBS s) of
        Right t -> t
        Left _ -> T.pack s
 
+#if MIN_VERSION_aeson(2,0,0)
+textKey :: T.Text -> AK.Key
+textKey = AK.fromText
+#else
+textKey :: T.Text -> T.Text
+textKey = id
+#endif
+
 -- | The same as packString . decodeBS, but more efficient in the usual
 -- case.
 packByteString :: S.ByteString -> T.Text