diff --git a/CHANGELOG.md b/CHANGELOG.md index bf8597f..3ca217b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Notable changes to this project are documented in this file. The format is based Breaking changes: New features: +- Added `fromJsonString` and `toJsonString` (#109 by @sigma-andex) Bugfixes: diff --git a/packages.dhall b/packages.dhall index 582d6d3..2fae6a5 100644 --- a/packages.dhall +++ b/packages.dhall @@ -1,4 +1,5 @@ let upstream = - https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall + https://github.com/purescript/package-sets/releases/download/psc-0.15.2-20220612/packages.dhall + sha256:9876aee1362a5dac10061768c68a7ecc4a59ca9267c3760f7d43ea9d3812ec11 in upstream diff --git a/src/Data/Argonaut/Decode.purs b/src/Data/Argonaut/Decode.purs index 27dffdf..29bfda0 100644 --- a/src/Data/Argonaut/Decode.purs +++ b/src/Data/Argonaut/Decode.purs @@ -1,20 +1,19 @@ module Data.Argonaut.Decode - ( module Data.Argonaut.Decode.Class + ( fromJsonString + , module Data.Argonaut.Decode.Class , module Data.Argonaut.Decode.Combinators , module Data.Argonaut.Decode.Error , module Data.Argonaut.Decode.Parser ) where +import Prelude + import Data.Argonaut.Decode.Class (class DecodeJson, decodeJson) -import Data.Argonaut.Decode.Combinators - ( getField - , getFieldOptional - , getFieldOptional' - , defaultField - , (.:) - , (.:!) - , (.:?) - , (.!=) - ) +import Data.Argonaut.Decode.Combinators (getField, getFieldOptional, getFieldOptional', defaultField, (.:), (.:!), (.:?), (.!=)) import Data.Argonaut.Decode.Error (JsonDecodeError(..), printJsonDecodeError) import Data.Argonaut.Decode.Parser (parseJson) +import Data.Either (Either) + +-- | Parse and decode a json in one step. +fromJsonString :: forall json. DecodeJson json => String -> Either JsonDecodeError json +fromJsonString = parseJson >=> decodeJson diff --git a/src/Data/Argonaut/Encode.purs b/src/Data/Argonaut/Encode.purs index edd341d..fb0e970 100644 --- a/src/Data/Argonaut/Encode.purs +++ b/src/Data/Argonaut/Encode.purs @@ -1,16 +1,15 @@ module Data.Argonaut.Encode ( module Data.Argonaut.Encode.Class , module Data.Argonaut.Encode.Combinators + , toJsonString ) where +import Prelude + +import Data.Argonaut.Core (stringify) import Data.Argonaut.Encode.Class (class EncodeJson, encodeJson) -import Data.Argonaut.Encode.Combinators - ( assoc - , assocOptional - , extend - , extendOptional - , (:=) - , (:=?) - , (~>) - , (~>?) - ) +import Data.Argonaut.Encode.Combinators (assoc, assocOptional, extend, extendOptional, (:=), (:=?), (~>), (~>?)) + +-- | Encode and stringify a type in one step. +toJsonString :: forall t. EncodeJson t => t -> String +toJsonString = encodeJson >>> stringify