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 :: ByteString -> Either String a decode ByteString x = do Value y <- Decoder Value -> ByteString -> Either String Value forall a. Decoder a -> ByteString -> Either String 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) ByteString x Value -> Either String a forall a. HasCodec a => Value -> Either String a fromValue Value y decodePointer :: ByteString.ByteString -> Either String Pointer.Pointer decodePointer :: ByteString -> Either String Pointer decodePointer = Decoder Pointer -> ByteString -> Either String Pointer forall a. Decoder a -> ByteString -> Either String a Decoder.run Decoder Pointer Pointer.decode fromValue :: HasCodec.HasCodec a => Value.Value -> Either String a fromValue :: Value -> Either String a fromValue = Value a -> Value -> Either String a forall a. Value a -> Value -> Either String a Codec.decodeWith Value a forall a. HasCodec a => Value a HasCodec.codec