{-# LANGUAGE DeriveLift #-} module Argo.Internal.Json.Array where 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 newtype Array value = Array [value] deriving (Array value -> Array value -> Bool forall value. Eq value => Array value -> Array value -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Array value -> Array value -> Bool $c/= :: forall value. Eq value => Array value -> Array value -> Bool == :: Array value -> Array value -> Bool $c== :: forall value. Eq value => Array value -> Array value -> Bool Eq, forall value (m :: * -> *). (Lift value, Quote m) => Array value -> m Exp forall value (m :: * -> *). (Lift value, Quote m) => Array value -> Code m (Array value) forall t. (forall (m :: * -> *). Quote m => t -> m Exp) -> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t forall (m :: * -> *). Quote m => Array value -> m Exp forall (m :: * -> *). Quote m => Array value -> Code m (Array value) liftTyped :: forall (m :: * -> *). Quote m => Array value -> Code m (Array value) $cliftTyped :: forall value (m :: * -> *). (Lift value, Quote m) => Array value -> Code m (Array value) lift :: forall (m :: * -> *). Quote m => Array value -> m Exp $clift :: forall value (m :: * -> *). (Lift value, Quote m) => Array value -> m Exp TH.Lift, Int -> Array value -> ShowS forall value. Show value => Int -> Array value -> ShowS forall value. Show value => [Array value] -> ShowS forall value. Show value => Array value -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Array value] -> ShowS $cshowList :: forall value. Show value => [Array value] -> ShowS show :: Array value -> String $cshow :: forall value. Show value => Array value -> String showsPrec :: Int -> Array value -> ShowS $cshowsPrec :: forall value. Show value => Int -> Array value -> ShowS Show) instance DeepSeq.NFData value => DeepSeq.NFData (Array value) where rnf :: Array value -> () rnf = forall a. NFData a => a -> () DeepSeq.rnf forall b c a. (b -> c) -> (a -> b) -> a -> c . forall value. Array value -> [value] toList fromList :: [value] -> Array value fromList :: forall value. [value] -> Array value fromList = forall value. [value] -> Array value Array toList :: Array value -> [value] toList :: forall value. Array value -> [value] toList (Array [value] x) = [value] x encode :: (value -> Encoder.Encoder ()) -> Array value -> Encoder.Encoder () encode :: forall value. (value -> Encoder ()) -> Array 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.leftSquareBracket) (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.rightSquareBracket ) (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) value -> Encoder () f forall b c a. (b -> c) -> (a -> b) -> a -> c . forall value. Array value -> [value] toList decode :: Decoder.Decoder value -> Decoder.Decoder (Array value) decode :: forall value. Decoder value -> Decoder (Array value) decode Decoder value f = do Word8 -> Decoder () Decoder.word8 Word8 Literal.leftSquareBracket Decoder () Decoder.spaces [value] xs <- forall a. Decoder a -> Decoder [a] Decoder.list Decoder value f Word8 -> Decoder () Decoder.word8 Word8 Literal.rightSquareBracket Decoder () Decoder.spaces forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ forall value. [value] -> Array value fromList [value] xs