module Argo.Decode where import qualified Argo.Class.FromValue as FromValue import qualified Argo.Decoder as Decoder import qualified Argo.Json.Value as Value import qualified Argo.Result as Result import qualified Argo.Vendor.ByteString as ByteString decode :: FromValue.FromValue a => ByteString.ByteString -> Result.Result a decode :: ByteString -> Result a decode ByteString x = case Decoder Value -> ByteString -> Result (ByteString, Value) forall a. Decoder a -> ByteString -> Result (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 of Result.Failure String e -> String -> Result a forall a. String -> Result a Result.Failure String e Result.Success (ByteString _, Value y) -> Value -> Result a forall a. FromValue a => Value -> Result a FromValue.fromValue Value y