{-# 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 Member value = Member Name.Name value deriving (Member value -> Member value -> Bool (Member value -> Member value -> Bool) -> (Member value -> Member value -> Bool) -> Eq (Member value) forall value. Eq value => Member value -> Member value -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Member value -> Member value -> Bool $c/= :: forall value. Eq value => Member value -> Member value -> Bool == :: Member value -> Member value -> Bool $c== :: forall value. Eq value => Member value -> Member value -> Bool Eq, (forall x. Member value -> Rep (Member value) x) -> (forall x. Rep (Member value) x -> Member value) -> Generic (Member value) forall x. Rep (Member value) x -> Member value forall x. Member value -> Rep (Member value) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall value x. Rep (Member value) x -> Member value forall value x. Member value -> Rep (Member value) x $cto :: forall value x. Rep (Member value) x -> Member value $cfrom :: forall value x. Member value -> Rep (Member value) x Generics.Generic, Member value -> Q Exp Member value -> Q (TExp (Member value)) (Member value -> Q Exp) -> (Member value -> Q (TExp (Member value))) -> Lift (Member value) forall value. Lift value => Member value -> Q Exp forall value. Lift value => Member value -> Q (TExp (Member value)) forall t. (t -> Q Exp) -> (t -> Q (TExp t)) -> Lift t liftTyped :: Member value -> Q (TExp (Member value)) $cliftTyped :: forall value. Lift value => Member value -> Q (TExp (Member value)) lift :: Member value -> Q Exp $clift :: forall value. Lift value => Member value -> Q Exp TH.Lift, Member value -> () (Member value -> ()) -> NFData (Member value) forall value. NFData value => Member value -> () forall a. (a -> ()) -> NFData a rnf :: Member value -> () $crnf :: forall value. NFData value => Member value -> () DeepSeq.NFData, Int -> Member value -> ShowS [Member value] -> ShowS Member value -> String (Int -> Member value -> ShowS) -> (Member value -> String) -> ([Member value] -> ShowS) -> Show (Member value) forall value. Show value => Int -> Member value -> ShowS forall value. Show value => [Member value] -> ShowS forall value. Show value => Member value -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Member value] -> ShowS $cshowList :: forall value. Show value => [Member value] -> ShowS show :: Member value -> String $cshow :: forall value. Show value => Member value -> String showsPrec :: Int -> Member value -> ShowS $cshowsPrec :: forall value. Show value => Int -> Member value -> ShowS Show) fromTuple :: (Name.Name, value) -> Member value fromTuple :: (Name, value) -> Member value fromTuple = (Name -> value -> Member value) -> (Name, value) -> Member value forall a b c. (a -> b -> c) -> (a, b) -> c uncurry Name -> value -> Member value forall value. Name -> value -> Member value Member toTuple :: Member value -> (Name.Name, value) toTuple :: Member value -> (Name, value) toTuple (Member Name k value v) = (Name k, value v) encode :: (value -> Encoder.Encoder ()) -> Member value -> Encoder.Encoder () encode :: (value -> Encoder ()) -> Member 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 (Member value) decode :: Decoder value -> Decoder (Member value) decode Decoder value g = Name -> value -> Member value forall value. Name -> value -> Member value Member (Name -> value -> Member value) -> StateT ByteString (ExceptT String Identity) Name -> StateT ByteString (ExceptT String Identity) (value -> Member 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 -> Member value) -> StateT ByteString (ExceptT String Identity) () -> StateT ByteString (ExceptT String Identity) (value -> Member 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 -> Member value) -> StateT ByteString (ExceptT String Identity) () -> StateT ByteString (ExceptT String Identity) (value -> Member 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 -> Member value) -> Decoder value -> Decoder (Member value) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Decoder value g