Skip to content

Commit b022239

Browse files
Merge pull request #42 from davezuch/master
Update to latest codecs API
2 parents 59c4429 + bee2bf8 commit b022239

File tree

5 files changed

+25
-20
lines changed

5 files changed

+25
-20
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Go to [purescript-argonaut-core/README.md](https://github.com/purescript-contrib
1111
This library bundles together the following:
1212

1313
- [purescript-argonaut-core](https://github.com/purescript-contrib/purescript-argonaut-core) - basic parsing, printing, folding and types for `Json`
14-
- [purescript-argonaut-codecs](https://github.com/purescript-contrib/purescript-argonaut-codecs) - `EncodeJson` and `DecodeJson` classes, their instances
14+
- [purescript-argonaut-codecs](https://github.com/purescript-contrib/purescript-argonaut-codecs) - `EncodeJson` and `DecodeJson` classes, their instances, and helper functions
1515
- [purescript-argonaut-traversals](https://github.com/purescript-contrib/purescript-argonaut-traversals) - `JCursor`, prisms and traversals for `Json`
1616

1717
## Contributing

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
},
1212
"license": "MIT",
1313
"dependencies": {
14-
"purescript-argonaut-codecs": "^4.0.0",
14+
"purescript-argonaut-codecs": "^5.0.0",
1515
"purescript-argonaut-core": "^4.0.0",
16-
"purescript-argonaut-traversals": "^4.0.0"
16+
"purescript-argonaut-traversals": "^6.0.0"
1717
},
1818
"devDependencies": {
1919
"purescript-console": "^4.0.0",

examples/Examples/Data/Argonaut/Record.purs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,36 @@ module Examples.Data.Argonaut.Record where
22

33
import Prelude
44

5-
import Data.Argonaut (class EncodeJson, class DecodeJson, Json, encodeJson, fromArray, decodeJson, jsonEmptyObject, (~>), (:=), (.?))
5+
import Data.Argonaut (class EncodeJson, class DecodeJson, Json, encodeJson, fromArray, decodeJson, jsonEmptyObject, (~>), (~>?), (:=), (:=?), (.:), (.:?), (.!=))
66
import Data.Either (Either)
7+
import Data.Maybe (Maybe)
78
import Data.Traversable (traverse)
89

910
newtype BlogPost = BlogPost
1011
{ id :: Int
1112
, title :: String
12-
, categories :: String
1313
, content :: String
14+
, publishDate :: Maybe String
15+
, categories :: String
1416
}
1517

1618
instance decodeJsonBlogPost :: DecodeJson BlogPost where
1719
decodeJson json = do
1820
obj <- decodeJson json
19-
id <- obj .? "id"
20-
title <- obj .? "title"
21-
categories <- obj .? "categories"
22-
content <- obj .? "content"
23-
pure $ BlogPost { id, title, categories, content }
21+
id <- obj .: "id"
22+
title <- obj .: "title"
23+
content <- obj .: "content"
24+
publishDate <- obj .:? "publish_date"
25+
categories <- obj .:? "categories" .!= ""
26+
pure $ BlogPost { id, title, content, publishDate, categories }
2427

2528
instance encodeJsonBlogPost :: EncodeJson BlogPost where
2629
encodeJson (BlogPost post)
2730
= "id" := post.id
2831
~> "title" := post.title
29-
~> "categories" := post.categories
3032
~> "content" := post.content
33+
~> "publish_date" :=? post.publishDate
34+
~>? "categories" := post.categories
3135
~> jsonEmptyObject
3236

3337
type BlogPostArray = Array BlogPost

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Data/Argonaut.purs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ module Data.Argonaut
88
, module Data.Argonaut.Traversals
99
) where
1010

11+
1112
import Data.Argonaut.Core (Json, caseJson, caseJsonArray, caseJsonBoolean, caseJsonNull, caseJsonNumber, caseJsonObject, caseJsonString, fromArray, fromBoolean, fromNumber, fromObject, fromString, isArray, isBoolean, isNull, isNumber, isObject, isString, jsonEmptyArray, jsonEmptyObject, jsonEmptyString, jsonFalse, jsonNull, jsonSingletonArray, jsonSingletonObject, jsonTrue, jsonZero, stringify, toArray, toBoolean, toNull, toNumber, toObject, toString)
12-
import Data.Argonaut.Decode (class DecodeJson, decodeJson, defaultField, getField, getFieldOptional, (.?), (.?=), (.??))
13-
import Data.Argonaut.Encode (class EncodeJson, assoc, encodeJson, extend, (:=), (~>))
14-
import Data.Argonaut.JCursor (JCursor(..), JsonPrim(..), cursorGet, cursorSet, downField, downIndex, fail, fromPrims, inferEmpty, insideOut, primBool, primNull, primNum, primStr, primToJson, runJsonPrim, toPrims)
15-
import Data.Argonaut.Parser (jsonParser)
16-
import Data.Argonaut.Prisms (_Array, _Boolean, _Null, _Number, _Object, _String)
17-
import Data.Argonaut.Traversals (_JsonArray, _JsonBoolean, _JsonNull, _JsonNumber, _JsonObject, _JsonString)
13+
import Data.Argonaut.Decode (class DecodeJson, decodeJson, defaultField, defaultFieldDeprecated, getField, getFieldDeprecated, getFieldOptional, getFieldOptional', getFieldOptionalDeprecated, (.!=), (.:), (.:!), (.:?), (.?), (.?=), (.??))
14+
import Data.Argonaut.Encode (class EncodeJson, assoc, assocOptional, encodeJson, extend, extendOptional, (:=), (:=?), (~>), (~>?))
15+
import Data.Argonaut.JCursor (JCursor(..), JsonPrim(..), cursorGet, cursorSet, downField, downIndex, fail, fromPrims, inferEmpty, insideOut, primBool, primNull, primNum, primStr, primToJson, print, runJsonPrim, toPrims)
16+
import Data.Argonaut.Parser (jsonParser)
17+
import Data.Argonaut.Prisms (_Array, _Boolean, _Null, _Number, _Object, _String)
18+
import Data.Argonaut.Traversals (_JsonArray, _JsonBoolean, _JsonNull, _JsonNumber, _JsonObject, _JsonString)

0 commit comments

Comments
 (0)