Skip to content

Commit 54b26dc

Browse files
authored
Compiler 0.12 updates (paf31#47)
* Updates for 0.12 * Upgrade node * strmap -> object
1 parent 5eedc7c commit 54b26dc

28 files changed

+309
-320
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
language: node_js
22
dist: trusty
33
sudo: required
4-
node_js: 6
4+
node_js: stable
55
install:
66
- npm install -g bower
77
- npm install

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Generic deriving for `purescript-foreign`.
66

7-
- [Module Documentation](generated-docs/Data/Foreign/Generic.md)
7+
- [Module Documentation](generated-docs/Foreign/Generic.md)
88
- [Example](test/Main.purs)
99
- [Further examples in this repo](https://github.com/justinwoo/purescript-howto-foreign-generic)
1010

@@ -25,8 +25,8 @@ First, define some data type and derive `Generic`:
2525
To encode JSON, use `genericEncodeJSON`:
2626

2727
```purescript
28-
> import Data.Foreign.Class (class Encode, class Decode, encode, decode)
29-
> import Data.Foreign.Generic (defaultOptions, genericDecodeJSON, genericEncodeJSON)
28+
> import Foreign.Class (class Encode, class Decode, encode, decode)
29+
> import Foreign.Generic (defaultOptions, genericDecodeJSON, genericEncodeJSON)
3030
3131
> opts = defaultOptions { unwrapSingleConstructors = true }
3232

bower.json

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,17 @@
1515
"url": "git://github.com/paf31/purescript-foreign-generic.git"
1616
},
1717
"dependencies": {
18-
"purescript-console": "^3.0.0",
19-
"purescript-eff": "^3.1.0",
20-
"purescript-exceptions": "^3.0.0",
21-
"purescript-foreign": "^4.0.1",
22-
"purescript-generics-rep": "^5.1.0",
23-
"purescript-globals": "^3.0.0",
24-
"purescript-maps": "^3.3.1",
25-
"purescript-nullable": "^3.0.0",
26-
"purescript-proxy": "^2.1.0",
27-
"purescript-symbols": "^3.0.0"
18+
"purescript-effect": "^2.0.0",
19+
"purescript-foreign": "^5.0.0",
20+
"purescript-foreign-object": "^1.0.0",
21+
"purescript-generics-rep": "^6.0.0",
22+
"purescript-ordered-collections": "^1.0.0",
23+
"purescript-proxy": "^3.0.0",
24+
"purescript-exceptions": "^4.0.0",
25+
"purescript-record": "^1.0.0"
2826
},
2927
"devDependencies": {
30-
"purescript-assert": "^3.0.0"
28+
"purescript-assert": "^4.0.0",
29+
"purescript-psci-support": "^4.0.0"
3130
}
3231
}

generated-docs/Data/Foreign/Internal.md

Lines changed: 0 additions & 19 deletions
This file was deleted.

generated-docs/Data/Foreign/NullOrUndefined.md

Lines changed: 0 additions & 46 deletions
This file was deleted.

generated-docs/Data/Foreign/Class.md renamed to generated-docs/Foreign/Class.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Module Data.Foreign.Class
1+
## Module Foreign.Class
22

33
#### `Decode`
44

@@ -34,8 +34,8 @@ Decode Boolean
3434
Decode Number
3535
Decode Int
3636
(Decode a) => Decode (Array a)
37-
(Decode v) => Decode (StrMap v)
38-
(Decode a) => Decode (NullOrUndefined a)
37+
(Decode a) => Decode (Maybe a)
38+
(Decode v) => Decode (Object v)
3939
```
4040

4141
#### `Encode`
@@ -72,8 +72,8 @@ Encode Boolean
7272
Encode Number
7373
Encode Int
7474
(Encode a) => Encode (Array a)
75-
(Encode a) => Encode (NullOrUndefined a)
76-
(Encode v) => Encode (StrMap v)
75+
(Encode a) => Encode (Maybe a)
76+
(Encode v) => Encode (Object v)
7777
```
7878

7979

generated-docs/Data/Foreign/Generic.md renamed to generated-docs/Foreign/Generic.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Module Data.Foreign.Generic
1+
## Module Foreign.Generic
22

33
#### `defaultOptions`
44

@@ -28,7 +28,7 @@ Read a value which has a `Generic` type.
2828
genericEncode :: forall a rep. Generic a rep => GenericEncode rep => Options -> a -> Foreign
2929
```
3030

31-
Generate a `Foreign` value compatible with the `readGeneric` function.
31+
Generate a `Foreign` value compatible with the `genericDecode` function.
3232

3333
#### `decodeJSON`
3434

generated-docs/Data/Foreign/Generic/Class.md renamed to generated-docs/Foreign/Generic/Class.md

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Module Data.Foreign.Generic.Class
1+
## Module Foreign.Generic.Class
22

33
#### `GenericDecode`
44

@@ -38,9 +38,8 @@ class GenericDecodeArgs a where
3838
##### Instances
3939
``` purescript
4040
GenericDecodeArgs NoArguments
41-
(Decode a) => GenericDecodeArgs (Argument a)
41+
(Decode_ a) => GenericDecodeArgs (Argument a)
4242
(GenericDecodeArgs a, GenericDecodeArgs b) => GenericDecodeArgs (Product a b)
43-
(GenericDecodeFields fields) => GenericDecodeArgs (Rec fields)
4443
```
4544

4645
#### `GenericEncodeArgs`
@@ -53,50 +52,74 @@ class GenericEncodeArgs a where
5352
##### Instances
5453
``` purescript
5554
GenericEncodeArgs NoArguments
56-
(Encode a) => GenericEncodeArgs (Argument a)
55+
(Encode_ a) => GenericEncodeArgs (Argument a)
5756
(GenericEncodeArgs a, GenericEncodeArgs b) => GenericEncodeArgs (Product a b)
58-
(GenericEncodeFields fields) => GenericEncodeArgs (Rec fields)
5957
```
6058

61-
#### `GenericDecodeFields`
59+
#### `GenericCountArgs`
6260

6361
``` purescript
64-
class GenericDecodeFields a where
65-
decodeFields :: Options -> Foreign -> F a
62+
class GenericCountArgs a where
63+
countArgs :: Proxy a -> Either a Int
6664
```
6765

6866
##### Instances
6967
``` purescript
70-
(IsSymbol name, Decode a) => GenericDecodeFields (Field name a)
71-
(GenericDecodeFields a, GenericDecodeFields b) => GenericDecodeFields (Product a b)
68+
GenericCountArgs NoArguments
69+
GenericCountArgs (Argument a)
70+
(GenericCountArgs a, GenericCountArgs b) => GenericCountArgs (Product a b)
7271
```
7372

74-
#### `GenericEncodeFields`
73+
#### `Decode_`
7574

7675
``` purescript
77-
class GenericEncodeFields a where
78-
encodeFields :: Options -> a -> StrMap Foreign
76+
class Decode_ a where
77+
decode_ :: Options -> Foreign -> F a
7978
```
8079

8180
##### Instances
8281
``` purescript
83-
(IsSymbol name, Encode a) => GenericEncodeFields (Field name a)
84-
(GenericEncodeFields a, GenericEncodeFields b) => GenericEncodeFields (Product a b)
82+
(RowToList r rl, DecodeRecord r rl) => Decode_ { | r }
83+
(Decode a) => Decode_ a
8584
```
8685

87-
#### `GenericCountArgs`
86+
#### `Encode_`
8887

8988
``` purescript
90-
class GenericCountArgs a where
91-
countArgs :: Proxy a -> Either a Int
89+
class Encode_ a where
90+
encode_ :: Options -> a -> Foreign
9291
```
9392

9493
##### Instances
9594
``` purescript
96-
GenericCountArgs NoArguments
97-
GenericCountArgs (Argument a)
98-
(GenericCountArgs a, GenericCountArgs b) => GenericCountArgs (Product a b)
99-
GenericCountArgs (Rec fields)
95+
(RowToList r rl, EncodeRecord r rl) => Encode_ { | r }
96+
(Encode a) => Encode_ a
97+
```
98+
99+
#### `DecodeRecord`
100+
101+
``` purescript
102+
class DecodeRecord r rl | rl -> r where
103+
decodeRecord_ :: RLProxy rl -> Options -> Foreign -> F (Builder { } ({ | r }))
104+
```
105+
106+
##### Instances
107+
``` purescript
108+
DecodeRecord () Nil
109+
(Cons l a r_ r, DecodeRecord r_ rl_, IsSymbol l, Decode_ a, Lacks l r_) => DecodeRecord r (Cons l a rl_)
110+
```
111+
112+
#### `EncodeRecord`
113+
114+
``` purescript
115+
class EncodeRecord r rl | rl -> r where
116+
encodeRecord_ :: RLProxy rl -> Options -> { | r } -> Object Foreign
117+
```
118+
119+
##### Instances
120+
``` purescript
121+
EncodeRecord () Nil
122+
(Cons l a r_ r, EncodeRecord r_ rl_, IsSymbol l, Encode_ a) => EncodeRecord r (Cons l a rl_)
100123
```
101124

102125

generated-docs/Data/Foreign/Generic/EnumEncoding.md renamed to generated-docs/Foreign/Generic/EnumEncoding.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Module Data.Foreign.Generic.EnumEncoding
1+
## Module Foreign.Generic.EnumEncoding
22

33
#### `GenericEnumOptions`
44

@@ -58,9 +58,8 @@ instance dFruit :: Decode Fruit where
5858
``` purescript
5959
(GenericDecodeEnum a, GenericDecodeEnum b) => GenericDecodeEnum (Sum a b)
6060
(IsSymbol name) => GenericDecodeEnum (Constructor name NoArguments)
61-
(Fail "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.") => GenericDecodeEnum (Constructor name (Argument a))
62-
(Fail "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.") => GenericDecodeEnum (Constructor name (Product a b))
63-
(Fail "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.") => GenericDecodeEnum (Constructor name (Rec a))
61+
(Fail (Text "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.")) => GenericDecodeEnum (Constructor name (Argument a))
62+
(Fail (Text "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.")) => GenericDecodeEnum (Constructor name (Product a b))
6463
```
6564

6665
#### `GenericEncodeEnum`
@@ -76,9 +75,8 @@ A type class for type representations that can be used for encoding from an Enum
7675
``` purescript
7776
(GenericEncodeEnum a, GenericEncodeEnum b) => GenericEncodeEnum (Sum a b)
7877
(IsSymbol name) => GenericEncodeEnum (Constructor name NoArguments)
79-
(Fail "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.") => GenericEncodeEnum (Constructor name (Argument a))
80-
(Fail "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.") => GenericEncodeEnum (Constructor name (Product a b))
81-
(Fail "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.") => GenericEncodeEnum (Constructor name (Rec a))
78+
(Fail (Text "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.")) => GenericEncodeEnum (Constructor name (Argument a))
79+
(Fail (Text "genericEncode/DecodeEnum cannot be used on types that are not sums of constructors with no arguments.")) => GenericEncodeEnum (Constructor name (Product a b))
8280
```
8381

8482

generated-docs/Data/Foreign/Generic/Types.md renamed to generated-docs/Foreign/Generic/Types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Module Data.Foreign.Generic.Types
1+
## Module Foreign.Generic.Types
22

33
#### `Options`
44

0 commit comments

Comments
 (0)