module Argo.Internal.Decode where import qualified Argo.Internal.Class.HasCodec as HasCodec import qualified Argo.Internal.Codec.Value as Codec import qualified Argo.Internal.Json.Value as Value import qualified Argo.Internal.Pointer.Pointer as Pointer import qualified Argo.Internal.Type.Decoder as Decoder import qualified Argo.Vendor.ByteString as ByteString decode :: HasCodec.HasCodec a => ByteString.ByteString -> Either String a decode :: forall a. HasCodec a => ByteString -> Either String a decode ByteString x = do Value y <- forall a. Decoder a -> ByteString -> Either String a Decoder.run (Decoder () Decoder.spaces forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> StateT ByteString (ExceptT String Identity) Value Value.decode) ByteString x forall a. HasCodec a => Value -> Either String a fromValue Value y decodePointer :: ByteString.ByteString -> Either String Pointer.Pointer decodePointer :: ByteString -> Either String Pointer decodePointer = forall a. Decoder a -> ByteString -> Either String a Decoder.run Decoder Pointer Pointer.decode fromValue :: HasCodec.HasCodec a => Value.Value -> Either String a fromValue :: forall a. HasCodec a => Value -> Either String a fromValue = forall a. Value a -> Value -> Either String a Codec.decodeWith forall a. HasCodec a => Value a HasCodec.codec