{-# LANGUAGE DeriveLift #-} module Argo.Internal.Json.Object where import qualified Argo.Internal.Json.Member as Member import qualified Argo.Internal.Literal as Literal import qualified Argo.Internal.Type.Decoder as Decoder import qualified Argo.Internal.Type.Encoder as Encoder import qualified Argo.Vendor.Builder as Builder import qualified Argo.Vendor.DeepSeq as DeepSeq import qualified Argo.Vendor.TemplateHaskell as TH import qualified Argo.Vendor.Transformers as Trans import qualified Control.Monad as Monad newtype Object value = Object [Member.Member value] deriving (Object value -> Object value -> Bool forall value. Eq value => Object value -> Object value -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Object value -> Object value -> Bool $c/= :: forall value. Eq value => Object value -> Object value -> Bool == :: Object value -> Object value -> Bool $c== :: forall value. Eq value => Object value -> Object value -> Bool Eq, forall value (m :: * -> *). (Lift value, Quote m) => Object value -> m Exp forall value (m :: * -> *). (Lift value, Quote m) => Object value -> Code m (Object value) forall t. (forall (m :: * -> *). Quote m => t -> m Exp) -> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t forall (m :: * -> *). Quote m => Object value -> m Exp forall (m :: * -> *). Quote m => Object value -> Code m (Object value) liftTyped :: forall (m :: * -> *). Quote m => Object value -> Code m (Object value) $cliftTyped :: forall value (m :: * -> *). (Lift value, Quote m) => Object value -> Code m (Object value) lift :: forall (m :: * -> *). Quote m => Object value -> m Exp $clift :: forall value (m :: * -> *). (Lift value, Quote m) => Object value -> m Exp TH.Lift, Int -> Object value -> ShowS forall value. Show value => Int -> Object value -> ShowS forall value. Show value => [Object value] -> ShowS forall value. Show value => Object value -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Object value] -> ShowS $cshowList :: forall value. Show value => [Object value] -> ShowS show :: Object value -> String $cshow :: forall value. Show value => Object value -> String showsPrec :: Int -> Object value -> ShowS $cshowsPrec :: forall value. Show value => Int -> Object value -> ShowS Show) instance DeepSeq.NFData value => DeepSeq.NFData (Object value) where rnf :: Object value -> () rnf = forall a. NFData a => a -> () DeepSeq.rnf forall b c a. (b -> c) -> (a -> b) -> a -> c . forall value. Object value -> [Member value] toList fromList :: [Member.Member value] -> Object value fromList :: forall value. [Member value] -> Object value fromList = forall value. [Member value] -> Object value Object toList :: Object value -> [Member.Member value] toList :: forall value. Object value -> [Member value] toList (Object [Member value] x) = [Member value] x encode :: (value -> Encoder.Encoder ()) -> Object value -> Encoder.Encoder () encode :: forall value. (value -> Encoder ()) -> Object value -> Encoder () encode value -> Encoder () f = forall a. Encoder () -> Encoder () -> Encoder () -> (a -> Encoder ()) -> [a] -> Encoder () Encoder.list (forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (m :: * -> *) w. Monad m => w -> WriterT w m () Trans.tell forall a b. (a -> b) -> a -> b $ Word8 -> Builder Builder.word8 Word8 Literal.leftCurlyBracket) (forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (m :: * -> *) w. Monad m => w -> WriterT w m () Trans.tell forall a b. (a -> b) -> a -> b $ Word8 -> Builder Builder.word8 Word8 Literal.rightCurlyBracket) (forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (m :: * -> *) w. Monad m => w -> WriterT w m () Trans.tell forall a b. (a -> b) -> a -> b $ Word8 -> Builder Builder.word8 Word8 Literal.comma) (forall value. (value -> Encoder ()) -> Member value -> Encoder () Member.encode value -> Encoder () f) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall value. Object value -> [Member value] toList encodeElement :: (value -> Encoder.Encoder ()) -> Int -> Member.Member value -> Encoder.Encoder () encodeElement :: forall value. (value -> Encoder ()) -> Int -> Member value -> Encoder () encodeElement value -> Encoder () f Int i Member value x = do forall (f :: * -> *). Applicative f => Bool -> f () -> f () Monad.when (Int i forall a. Ord a => a -> a -> Bool > Int 0) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (m :: * -> *) w. Monad m => w -> WriterT w m () Trans.tell forall a b. (a -> b) -> a -> b $ Word8 -> Builder Builder.word8 Word8 Literal.comma forall value. (value -> Encoder ()) -> Member value -> Encoder () Member.encode value -> Encoder () f Member value x decode :: Decoder.Decoder value -> Decoder.Decoder (Object value) decode :: forall value. Decoder value -> Decoder (Object value) decode Decoder value f = do Word8 -> Decoder () Decoder.word8 Word8 Literal.leftCurlyBracket Decoder () Decoder.spaces [Member value] xs <- forall a. Decoder a -> Decoder [a] Decoder.list forall a b. (a -> b) -> a -> b $ forall value. Decoder value -> Decoder (Member value) Member.decode Decoder value f Word8 -> Decoder () Decoder.word8 Word8 Literal.rightCurlyBracket Decoder () Decoder.spaces forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall value. [Member value] -> Object value fromList [Member value] xs