{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveLift #-} module Argo.Json.Member where import qualified Argo.Json.Name as Name import qualified Argo.Literal as Literal import qualified Argo.Type.Config as Config import qualified Argo.Type.Decoder as Decoder import qualified Argo.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 import qualified GHC.Generics as Generics data MemberOf value = Member Name.Name value deriving (MemberOf value -> MemberOf value -> Bool (MemberOf value -> MemberOf value -> Bool) -> (MemberOf value -> MemberOf value -> Bool) -> Eq (MemberOf value) forall value. Eq value => MemberOf value -> MemberOf value -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: MemberOf value -> MemberOf value -> Bool $c/= :: forall value. Eq value => MemberOf value -> MemberOf value -> Bool == :: MemberOf value -> MemberOf value -> Bool $c== :: forall value. Eq value => MemberOf value -> MemberOf value -> Bool Eq, (forall x. MemberOf value -> Rep (MemberOf value) x) -> (forall x. Rep (MemberOf value) x -> MemberOf value) -> Generic (MemberOf value) forall x. Rep (MemberOf value) x -> MemberOf value forall x. MemberOf value -> Rep (MemberOf value) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall value x. Rep (MemberOf value) x -> MemberOf value forall value x. MemberOf value -> Rep (MemberOf value) x $cto :: forall value x. Rep (MemberOf value) x -> MemberOf value $cfrom :: forall value x. MemberOf value -> Rep (MemberOf value) x Generics.Generic, MemberOf value -> Q Exp MemberOf value -> Q (TExp (MemberOf value)) (MemberOf value -> Q Exp) -> (MemberOf value -> Q (TExp (MemberOf value))) -> Lift (MemberOf value) forall value. Lift value => MemberOf value -> Q Exp forall value. Lift value => MemberOf value -> Q (TExp (MemberOf value)) forall t. (t -> Q Exp) -> (t -> Q (TExp t)) -> Lift t liftTyped :: MemberOf value -> Q (TExp (MemberOf value)) $cliftTyped :: forall value. Lift value => MemberOf value -> Q (TExp (MemberOf value)) lift :: MemberOf value -> Q Exp $clift :: forall value. Lift value => MemberOf value -> Q Exp TH.Lift, MemberOf value -> () (MemberOf value -> ()) -> NFData (MemberOf value) forall value. NFData value => MemberOf value -> () forall a. (a -> ()) -> NFData a rnf :: MemberOf value -> () $crnf :: forall value. NFData value => MemberOf value -> () DeepSeq.NFData, Int -> MemberOf value -> ShowS [MemberOf value] -> ShowS MemberOf value -> String (Int -> MemberOf value -> ShowS) -> (MemberOf value -> String) -> ([MemberOf value] -> ShowS) -> Show (MemberOf value) forall value. Show value => Int -> MemberOf value -> ShowS forall value. Show value => [MemberOf value] -> ShowS forall value. Show value => MemberOf value -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MemberOf value] -> ShowS $cshowList :: forall value. Show value => [MemberOf value] -> ShowS show :: MemberOf value -> String $cshow :: forall value. Show value => MemberOf value -> String showsPrec :: Int -> MemberOf value -> ShowS $cshowsPrec :: forall value. Show value => Int -> MemberOf value -> ShowS Show) fromTuple :: (Name.Name, value) -> MemberOf value fromTuple :: (Name, value) -> MemberOf value fromTuple = (Name -> value -> MemberOf value) -> (Name, value) -> MemberOf value forall a b c. (a -> b -> c) -> (a, b) -> c uncurry Name -> value -> MemberOf value forall value. Name -> value -> MemberOf value Member toTuple :: MemberOf value -> (Name.Name, value) toTuple :: MemberOf value -> (Name, value) toTuple (Member Name k value v) = (Name k, value v) encode :: (value -> Encoder.Encoder ()) -> MemberOf value -> Encoder.Encoder () encode :: (value -> Encoder ()) -> MemberOf value -> Encoder () encode value -> Encoder () f (Member Name x value y) = do Name -> Encoder () Name.encode Name x WriterT Builder Identity () -> Encoder () forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a Trans.lift (WriterT Builder Identity () -> Encoder ()) -> (Builder -> WriterT Builder Identity ()) -> Builder -> Encoder () forall b c a. (b -> c) -> (a -> b) -> a -> c . Builder -> WriterT Builder Identity () forall (m :: * -> *) w. Monad m => w -> WriterT w m () Trans.tell (Builder -> Encoder ()) -> Builder -> Encoder () forall a b. (a -> b) -> a -> b $ Word8 -> Builder Builder.word8 Word8 Literal.colon Config config <- ReaderT Config (WriterT Builder Identity) Config forall (m :: * -> *) r. Monad m => ReaderT r m r Trans.ask Bool -> Encoder () -> Encoder () forall (f :: * -> *). Applicative f => Bool -> f () -> f () Monad.when (Config -> Bool Config.hasIndent Config config) (Encoder () -> Encoder ()) -> (Builder -> Encoder ()) -> Builder -> Encoder () forall b c a. (b -> c) -> (a -> b) -> a -> c . WriterT Builder Identity () -> Encoder () forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a Trans.lift (WriterT Builder Identity () -> Encoder ()) -> (Builder -> WriterT Builder Identity ()) -> Builder -> Encoder () forall b c a. (b -> c) -> (a -> b) -> a -> c . Builder -> WriterT Builder Identity () forall (m :: * -> *) w. Monad m => w -> WriterT w m () Trans.tell (Builder -> Encoder ()) -> Builder -> Encoder () forall a b. (a -> b) -> a -> b $ Word8 -> Builder Builder.word8 Word8 Literal.space value -> Encoder () f value y decode :: Decoder.Decoder value -> Decoder.Decoder (MemberOf value) decode :: Decoder value -> Decoder (MemberOf value) decode Decoder value g = Name -> value -> MemberOf value forall value. Name -> value -> MemberOf value Member (Name -> value -> MemberOf value) -> StateT ByteString (ExceptT String Identity) Name -> StateT ByteString (ExceptT String Identity) (value -> MemberOf value) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> StateT ByteString (ExceptT String Identity) Name Name.decode StateT ByteString (ExceptT String Identity) (value -> MemberOf value) -> StateT ByteString (ExceptT String Identity) () -> StateT ByteString (ExceptT String Identity) (value -> MemberOf value) forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Word8 -> StateT ByteString (ExceptT String Identity) () Decoder.word8 Word8 Literal.colon StateT ByteString (ExceptT String Identity) (value -> MemberOf value) -> StateT ByteString (ExceptT String Identity) () -> StateT ByteString (ExceptT String Identity) (value -> MemberOf value) forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* StateT ByteString (ExceptT String Identity) () Decoder.spaces StateT ByteString (ExceptT String Identity) (value -> MemberOf value) -> Decoder value -> Decoder (MemberOf value) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Decoder value g