packages feed

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

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 = decodeWith FromValue.fromValue

decodeWith :: (Value.Value -> Maybe a) -> ByteString.ByteString -> Maybe a
decodeWith f x = do
    (_, y) <- Decoder.run (Decoder.spaces *> Value.decode <* Decoder.eof) x
    f y