{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS -Wno-orphans #-} module TextShow.Data.Aeson where import Data.Aeson (Value(..)) import qualified Data.Aeson.Key as K import qualified Data.Aeson.KeyMap as KM import Prelude () import Prelude.Compat import TextShow ( TextShow(..), TextShow1(..) , fromText, showbParen, showbPrec1, showtToShowb, singleton ) import TextShow.Data.Scientific () import TextShow.Data.Vector () import TextShow.Utils (showbUnaryListWith) instance TextShow K.Key where showb :: Key -> Builder showb = forall a. (a -> Text) -> a -> Builder showtToShowb forall a. TextShow a => a -> Text showt showt :: Key -> Text showt = forall a. TextShow a => a -> Text showt forall b c a. (b -> c) -> (a -> b) -> a -> c . Key -> Text K.toText instance TextShow Value where showbPrec :: Int -> Value -> Builder showbPrec Int _ Value Null = Text -> Builder fromText Text "Null" showbPrec Int d (Bool Bool b) = Bool -> Builder -> Builder showbParen (Int d forall a. Ord a => a -> a -> Bool > Int 10) forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Bool " forall a. Semigroup a => a -> a -> a <> forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Bool b showbPrec Int d (Number Scientific s) = Bool -> Builder -> Builder showbParen (Int d forall a. Ord a => a -> a -> Bool > Int 10) forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Number " forall a. Semigroup a => a -> a -> a <> forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Scientific s showbPrec Int d (String Text s) = Bool -> Builder -> Builder showbParen (Int d forall a. Ord a => a -> a -> Bool > Int 10) forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "String " forall a. Semigroup a => a -> a -> a <> forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Text s showbPrec Int d (Array Array xs) = Bool -> Builder -> Builder showbParen (Int d forall a. Ord a => a -> a -> Bool > Int 10) forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Array " forall a. Semigroup a => a -> a -> a <> forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Array xs showbPrec Int d (Object Object xs) = Bool -> Builder -> Builder showbParen (Int d forall a. Ord a => a -> a -> Bool > Int 10) forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Object (fromList " forall a. Semigroup a => a -> a -> a <> forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 (forall v. KeyMap v -> [(Key, v)] KM.toAscList Object xs) forall a. Semigroup a => a -> a -> a <> Char -> Builder singleton Char ')' instance TextShow v => TextShow (KM.KeyMap v) where showbPrec :: Int -> KeyMap v -> Builder showbPrec = forall (f :: * -> *) a. (TextShow1 f, TextShow a) => Int -> f a -> Builder showbPrec1 instance TextShow1 KM.KeyMap where liftShowbPrec :: forall a. (Int -> a -> Builder) -> ([a] -> Builder) -> Int -> KeyMap a -> Builder liftShowbPrec Int -> a -> Builder sp [a] -> Builder sl Int d KeyMap a xs = forall a. ([a] -> Builder) -> Int -> [a] -> Builder showbUnaryListWith (forall (f :: * -> *) a. TextShow1 f => (Int -> a -> Builder) -> ([a] -> Builder) -> [f a] -> Builder liftShowbList Int -> a -> Builder sp [a] -> Builder sl) Int d (forall v. KeyMap v -> [(Key, v)] KM.toAscList KeyMap a xs)