{-# 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 = (Key -> Text) -> Key -> Builder forall a. (a -> Text) -> a -> Builder showtToShowb Key -> Text forall a. TextShow a => a -> Text showt showt :: Key -> Text showt = Text -> Text forall a. TextShow a => a -> Text showt (Text -> Text) -> (Key -> Text) -> Key -> Text 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 Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (Builder -> Builder) -> Builder -> Builder forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Bool " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Bool -> Builder forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Bool b showbPrec Int d (Number Scientific s) = Bool -> Builder -> Builder showbParen (Int d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (Builder -> Builder) -> Builder -> Builder forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Number " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Scientific -> Builder forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Scientific s showbPrec Int d (String Text s) = Bool -> Builder -> Builder showbParen (Int d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (Builder -> Builder) -> Builder -> Builder forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "String " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Text -> Builder forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Text s showbPrec Int d (Array Array xs) = Bool -> Builder -> Builder showbParen (Int d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (Builder -> Builder) -> Builder -> Builder forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Array " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Array -> Builder forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 Array xs showbPrec Int d (Object Object xs) = Bool -> Builder -> Builder showbParen (Int d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (Builder -> Builder) -> Builder -> Builder forall a b. (a -> b) -> a -> b $ Text -> Builder fromText Text "Object (fromList " Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> [(Key, Value)] -> Builder forall a. TextShow a => Int -> a -> Builder showbPrec Int 11 (Object -> [(Key, Value)] forall v. KeyMap v -> [(Key, v)] KM.toAscList Object xs) Builder -> Builder -> Builder 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 = Int -> KeyMap v -> Builder 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 = ([(Key, a)] -> Builder) -> Int -> [(Key, a)] -> Builder forall a. ([a] -> Builder) -> Int -> [a] -> Builder showbUnaryListWith ((Int -> a -> Builder) -> ([a] -> Builder) -> [(Key, a)] -> Builder forall a. (Int -> a -> Builder) -> ([a] -> Builder) -> [(Key, a)] -> Builder forall (f :: * -> *) a. TextShow1 f => (Int -> a -> Builder) -> ([a] -> Builder) -> [f a] -> Builder liftShowbList Int -> a -> Builder sp [a] -> Builder sl) Int d (KeyMap a -> [(Key, a)] forall v. KeyMap v -> [(Key, v)] KM.toAscList KeyMap a xs)