|
1 |
| -{-# LANGUAGE OverloadedStrings, RecordWildCards #-} |
| 1 | +{-# LANGUAGE OverloadedStrings, RecordWildCards, CPP #-} |
2 | 2 |
|
3 | 3 | -- |Aeson-compatible pretty-printing of JSON 'Value's.
|
4 | 4 | module Data.Aeson.Encode.Pretty (
|
@@ -54,11 +54,15 @@ module Data.Aeson.Encode.Pretty (
|
54 | 54 | keyOrder
|
55 | 55 | ) where
|
56 | 56 |
|
| 57 | +#if MIN_VERSION_aeson(2,0,0) |
| 58 | +import qualified Data.Aeson.Key as AK |
| 59 | +import qualified Data.Aeson.KeyMap as AKM |
| 60 | +#endif |
57 | 61 | import Data.Aeson (Value(..), ToJSON(..))
|
58 | 62 | import qualified Data.Aeson.Text as Aeson
|
59 | 63 | import Data.ByteString.Lazy (ByteString)
|
60 | 64 | import Data.Function (on)
|
61 |
| -import qualified Data.HashMap.Strict as H (toList) |
| 65 | +import qualified Data.HashMap.Strict as H (toList, mapKeys) |
62 | 66 | import Data.List (intersperse, sortBy, elemIndex)
|
63 | 67 | import Data.Maybe (fromMaybe)
|
64 | 68 | import Data.Semigroup ((<>))
|
@@ -170,10 +174,16 @@ fromValue :: PState -> Value -> Builder
|
170 | 174 | fromValue st@PState{..} val = go val
|
171 | 175 | where
|
172 | 176 | go (Array v) = fromCompound st ("[","]") fromValue (V.toList v)
|
173 |
| - go (Object m) = fromCompound st ("{","}") fromPair (pSort (H.toList m)) |
| 177 | + go (Object m) = fromCompound st ("{","}") fromPair (pSort (toList' m)) |
174 | 178 | go (Number x) = fromNumber st x
|
175 | 179 | go v = Aeson.encodeToTextBuilder v
|
176 | 180 |
|
| 181 | +#if MIN_VERSION_aeson(2,0,0) |
| 182 | + toList' = fmap (\(k, v) -> (AK.toText k, v)) . AKM.toList |
| 183 | +#else |
| 184 | + toList' = H.toList |
| 185 | +#endif |
| 186 | + |
177 | 187 | fromCompound :: PState
|
178 | 188 | -> (Builder, Builder)
|
179 | 189 | -> (PState -> a -> Builder)
|
|
0 commit comments