packages feed

argo-0.2021.11.13: source/library/Argo/Decode.hs

module Argo.Decode where

import qualified Argo.Class.FromValue as FromValue
import qualified Argo.Class.HasCodec as HasCodec
import qualified Argo.Json.Value as Value
import qualified Argo.Pointer.Pointer as Pointer
import qualified Argo.Type.Decoder as Decoder
import qualified Argo.Vendor.ByteString as ByteString

decode :: HasCodec.HasCodec a => ByteString.ByteString -> Either String a
decode x = do
    y <- Decoder.run (Decoder.spaces *> Value.decode) x
    FromValue.fromValue y

decodePointer :: ByteString.ByteString -> Either String Pointer.Pointer
decodePointer = Decoder.run Pointer.decode