module Argo.Decode where import qualified Argo.Class.FromValue as FromValue import qualified Argo.Decoder as Decoder import qualified Argo.Type.Value as Value import qualified Data.ByteString as ByteString decode :: FromValue.FromValue a => ByteString.ByteString -> Maybe a decode :: ByteString -> Maybe a decode = (Value -> Maybe a) -> ByteString -> Maybe a forall a. (Value -> Maybe a) -> ByteString -> Maybe a decodeWith Value -> Maybe a forall a. FromValue a => Value -> Maybe a FromValue.fromValue decodeWith :: (Value.Value -> Maybe a) -> ByteString.ByteString -> Maybe a decodeWith :: (Value -> Maybe a) -> ByteString -> Maybe a decodeWith Value -> Maybe a f ByteString x = do (ByteString _, Value y) <- Decoder Value -> ByteString -> Maybe (ByteString, Value) forall a. Decoder a -> ByteString -> Maybe (ByteString, a) Decoder.run (Decoder () Decoder.spaces Decoder () -> Decoder Value -> Decoder Value forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> Decoder Value Value.decode Decoder Value -> Decoder () -> Decoder Value forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* Decoder () Decoder.eof) ByteString x Value -> Maybe a f Value y