{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# 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 import qualified GHC.Generics as Generics newtype Array value = Array [value] deriving (Array value -> Array value -> Bool (Array value -> Array value -> Bool) -> (Array value -> Array value -> Bool) -> Eq (Array value) 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 x. Array value -> Rep (Array value) x) -> (forall x. Rep (Array value) x -> Array value) -> Generic (Array value) forall x. Rep (Array value) x -> Array value forall x. Array value -> Rep (Array value) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall value x. Rep (Array value) x -> Array value forall value x. Array value -> Rep (Array value) x $cto :: forall value x. Rep (Array value) x -> Array value $cfrom :: forall value x. Array value -> Rep (Array value) x Generics.Generic, Array value -> Q Exp Array value -> Q (TExp (Array value)) (Array value -> Q Exp) -> (Array value -> Q (TExp (Array value))) -> Lift (Array value) forall value. Lift value => Array value -> Q Exp forall value. Lift value => Array value -> Q (TExp (Array value)) forall t. (t -> Q Exp) -> (t -> Q (TExp t)) -> Lift t liftTyped :: Array value -> Q (TExp (Array value)) $cliftTyped :: forall value. Lift value => Array value -> Q (TExp (Array value)) lift :: Array value -> Q Exp $clift :: forall value. Lift value => Array value -> Q Exp TH.Lift, Array value -> () (Array value -> ()) -> NFData (Array value) forall value. NFData value => Array value -> () forall a. (a -> ()) -> NFData a rnf :: Array value -> () $crnf :: forall value. NFData value => Array value -> () DeepSeq.NFData, Int -> Array value -> ShowS [Array value] -> ShowS Array value -> String (Int -> Array value -> ShowS) -> (Array value -> String) -> ([Array value] -> ShowS) -> Show (Array value) 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) fromList :: [value] -> Array value fromList :: [value] -> Array value fromList = [value] -> Array value forall value. [value] -> Array value Array toList :: Array value -> [value] toList :: Array value -> [value] toList (Array [value] x) = [value] x encode :: (value -> Encoder.Encoder ()) -> Array value -> Encoder.Encoder () encode :: (value -> Encoder ()) -> Array value -> Encoder () encode value -> Encoder () f = Encoder () -> Encoder () -> Encoder () -> (value -> Encoder ()) -> [value] -> Encoder () forall a. Encoder () -> Encoder () -> Encoder () -> (a -> Encoder ()) -> [a] -> Encoder () Encoder.list (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.leftSquareBracket) (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.rightSquareBracket ) (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.comma) value -> Encoder () f ([value] -> Encoder ()) -> (Array value -> [value]) -> Array value -> Encoder () forall b c a. (b -> c) -> (a -> b) -> a -> c . Array value -> [value] forall value. Array value -> [value] toList decode :: Decoder.Decoder value -> Decoder.Decoder (Array value) decode :: Decoder value -> Decoder (Array value) decode Decoder value f = do Word8 -> Decoder () Decoder.word8 Word8 Literal.leftSquareBracket Decoder () Decoder.spaces [value] xs <- Decoder value -> Decoder [value] forall a. Decoder a -> Decoder [a] Decoder.list Decoder value f Word8 -> Decoder () Decoder.word8 Word8 Literal.rightSquareBracket Decoder () Decoder.spaces Array value -> Decoder (Array value) forall (f :: * -> *) a. Applicative f => a -> f a pure (Array value -> Decoder (Array value)) -> Array value -> Decoder (Array value) forall a b. (a -> b) -> a -> b $ [value] -> Array value forall value. [value] -> Array value fromList [value] xs