{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveLift #-} module Argo.Json.Member where import qualified Argo.Decoder as Decoder import qualified Argo.Encoder as Encoder import qualified Argo.Json.Name as Name import qualified Argo.Literal as Literal 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) 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 Encoder.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) -> Decoder Name -> Decoder (value -> MemberOf value) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Decoder Name Name.decode Decoder (value -> MemberOf value) -> Decoder () -> Decoder (value -> MemberOf value) forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Word8 -> Decoder () Decoder.word8 Word8 Literal.colon Decoder (value -> MemberOf value) -> Decoder () -> Decoder (value -> MemberOf value) forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Decoder () Decoder.spaces Decoder (value -> MemberOf value) -> Decoder value -> Decoder (MemberOf value) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Decoder value g