{-# LANGUAGE DeriveLift #-} module Argo.Internal.Json.Member where import qualified Argo.Internal.Json.Name as Name import qualified Argo.Internal.Literal as Literal import qualified Argo.Internal.Type.Config as Config 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 data Member value = Member Name.Name value deriving (Member value -> Member value -> Bool 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 value (m :: * -> *). (Lift value, Quote m) => Member value -> m Exp forall value (m :: * -> *). (Lift value, Quote m) => Member value -> Code m (Member value) forall t. (forall (m :: * -> *). Quote m => t -> m Exp) -> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t forall (m :: * -> *). Quote m => Member value -> m Exp forall (m :: * -> *). Quote m => Member value -> Code m (Member value) liftTyped :: forall (m :: * -> *). Quote m => Member value -> Code m (Member value) $cliftTyped :: forall value (m :: * -> *). (Lift value, Quote m) => Member value -> Code m (Member value) lift :: forall (m :: * -> *). Quote m => Member value -> m Exp $clift :: forall value (m :: * -> *). (Lift value, Quote m) => Member value -> m Exp TH.Lift, Int -> Member value -> ShowS 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) instance DeepSeq.NFData value => DeepSeq.NFData (Member value) where rnf :: Member value -> () rnf = forall a. NFData a => a -> () DeepSeq.rnf forall b c a. (b -> c) -> (a -> b) -> a -> c . forall value. Member value -> (Name, value) toTuple fromTuple :: (Name.Name, value) -> Member value fromTuple :: forall value. (Name, value) -> Member value fromTuple = forall a b c. (a -> b -> c) -> (a, b) -> c uncurry forall value. Name -> value -> Member value Member toTuple :: Member value -> (Name.Name, value) toTuple :: forall value. Member value -> (Name, value) toTuple (Member Name k value v) = (Name k, value v) encode :: (value -> Encoder.Encoder ()) -> Member value -> Encoder.Encoder () encode :: forall value. (value -> Encoder ()) -> Member value -> Encoder () encode value -> Encoder () f (Member Name x value y) = do Name -> Encoder () Name.encode Name x 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.colon Config config <- forall (m :: * -> *) r. Monad m => ReaderT r m r Trans.ask forall (f :: * -> *). Applicative f => Bool -> f () -> f () Monad.when (Config -> Bool Config.hasIndent Config config) 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.space value -> Encoder () f value y decode :: Decoder.Decoder value -> Decoder.Decoder (Member value) decode :: forall value. Decoder value -> Decoder (Member value) decode Decoder value g = forall value. Name -> value -> Member value Member forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Decoder Name Name.decode forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Word8 -> Decoder () Decoder.word8 Word8 Literal.colon forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Decoder () Decoder.spaces forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Decoder value g