Skip to content

Commit 9a1c0e0

Browse files
Merge pull request #54 from ajnsit/identityInstances
Add encode/decode instances for `Identity a`
2 parents b0317d5 + f2805f0 commit 9a1c0e0

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"purescript-foreign-object": "^2.0.0",
3030
"purescript-record": "^2.0.0",
3131
"purescript-nonempty": "^5.0.0",
32-
"purescript-arrays": "^5.1.0"
32+
"purescript-arrays": "^5.1.0",
33+
"purescript-identity": "^4.1.0"
3334
},
3435
"devDependencies": {
3536
"purescript-assert": "^4.1.0",

src/Data/Argonaut/Decode/Class.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Data.Argonaut.Core (Json, isNull, caseJsonNull, caseJsonBoolean, caseJson
66
import Data.Array as Arr
77
import Data.Bifunctor (lmap, rmap)
88
import Data.Either (Either(..), note)
9+
import Data.Identity (Identity(..))
910
import Data.Int (fromNumber)
1011
import Data.List (List(..), (:), fromFoldable)
1112
import Data.List as L
@@ -27,6 +28,9 @@ import Type.Data.RowList (RLProxy(..))
2728
class DecodeJson a where
2829
decodeJson :: Json -> Either String a
2930

31+
instance decodeIdentity :: DecodeJson a => DecodeJson (Identity a) where
32+
decodeJson j = Identity <$> decodeJson j
33+
3034
instance decodeJsonMaybe :: DecodeJson a => DecodeJson (Maybe a) where
3135
decodeJson j
3236
| isNull j = pure Nothing

src/Data/Argonaut/Encode/Class.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Prelude
55
import Data.Argonaut.Core (Json, fromArray, fromBoolean, fromNumber, fromObject, fromString, jsonNull)
66
import Data.Array as Arr
77
import Data.Either (Either, either)
8+
import Data.Identity (Identity(..))
89
import Data.Int (toNumber)
910
import Data.List (List(..), (:), toUnfoldable)
1011
import Data.List as L
@@ -26,6 +27,9 @@ import Type.Data.RowList (RLProxy(..))
2627
class EncodeJson a where
2728
encodeJson :: a -> Json
2829

30+
instance encodeIdentity :: EncodeJson a => EncodeJson (Identity a) where
31+
encodeJson (Identity a) = encodeJson a
32+
2933
instance encodeJsonMaybe :: EncodeJson a => EncodeJson (Maybe a) where
3034
encodeJson Nothing = jsonNull
3135
encodeJson (Just a) = encodeJson a

0 commit comments

Comments
 (0)