Skip to content

Commit 423a843

Browse files
Merge pull request #49 from madriska/set-instance
Add instances for Data.Set
2 parents 0715397 + 1f00e01 commit 423a843

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

src/Data/Argonaut/Decode/Class.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Data.List as L
1212
import Data.Map as M
1313
import Data.Maybe (maybe, Maybe(..))
1414
import Data.NonEmpty (NonEmpty, (:|))
15+
import Data.Set as S
1516
import Data.String (CodePoint, codePointAt)
1617
import Data.Symbol (class IsSymbol, SProxy(..), reflectSymbol)
1718
import Data.Traversable (traverse)
@@ -102,6 +103,9 @@ instance decodeList :: DecodeJson a => DecodeJson (List a) where
102103
= lmap ("Couldn't decode List: " <> _)
103104
<<< (traverse decodeJson <=< map (map fromFoldable) decodeJArray)
104105

106+
instance decodeSet :: (Ord a, DecodeJson a) => DecodeJson (S.Set a) where
107+
decodeJson = map (S.fromFoldable :: List a -> S.Set a) <<< decodeJson
108+
105109
instance decodeMap :: (Ord a, DecodeJson a, DecodeJson b) => DecodeJson (M.Map a b) where
106110
decodeJson = map (M.fromFoldable :: List (Tuple a b) -> M.Map a b) <<< decodeJson
107111

src/Data/Argonaut/Encode/Class.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Data.List as L
1111
import Data.Map as M
1212
import Data.Maybe (Maybe(..))
1313
import Data.NonEmpty (NonEmpty(..))
14+
import Data.Set as S
1415
import Data.String (CodePoint)
1516
import Data.String.CodePoints as CP
1617
import Data.String.CodeUnits as CU
@@ -79,6 +80,9 @@ instance encodeJsonList :: EncodeJson a => EncodeJson (List a) where
7980
instance encodeForeignObject :: EncodeJson a => EncodeJson (FO.Object a) where
8081
encodeJson = fromObject <<< map encodeJson
8182

83+
instance encodeSet :: (Ord a, EncodeJson a) => EncodeJson (S.Set a) where
84+
encodeJson = encodeJson <<< (S.toUnfoldable :: S.Set a -> List a)
85+
8286
instance encodeMap :: (Ord a, EncodeJson a, EncodeJson b) => EncodeJson (M.Map a b) where
8387
encodeJson = encodeJson <<< (M.toUnfoldable :: M.Map a b -> List (Tuple a b))
8488

0 commit comments

Comments
 (0)