@@ -9,6 +9,7 @@ improve as we find its key failings.
99-}
1010
1111import Native.JavaScript
12+import Json
1213
1314data RawObject = RawObject
1415
@@ -16,13 +17,13 @@ data RawObject = RawObject
1617Arrays are converted into lists, nested objects are allowed.
1718No `null` values or non-homogeneous arrays.
1819
19− -- OK objects
20− { student:"Steve", scores:[83,94,99,72] }
21− { errorLevel:10, critical:true }
20+ -- OK objects
21+ { student:"Steve", scores:[83,94,99,72] }
22+ { errorLevel:10, critical:true }
2223
23− -- BAD objects
24− { answer:null }
25− { info:[true,42,'what'] }
24+ -- BAD objects
25+ { answer:null }
26+ { info:[true,42,'what'] }
2627-}
2728toRecord : RawObject -> a
2829toRecord = Native.JavaScript.toRecord
@@ -30,13 +31,25 @@ toRecord = Native.JavaScript.toRecord
3031{-| Turn arbitrary Elm records into JavaScript objects.
3132Lists become arrays, nested records are allowed. No ADTs.
3233
33− -- OK records
34− { student="Steve", scores=[83,94,99,72] }
35− { errorLevel=10, critical=True }
34+ -- OK records
35+ { student="Steve", scores=[83,94,99,72] }
36+ { errorLevel=10, critical=True }
3637
37− -- BAD records
38− { answer = Nothing }
39− { result = Left "An error occurred" }
38+ -- BAD records
39+ { answer = Nothing }
40+ { result = Left "An error occurred" }
4041-}
4142fromRecord : a -> RawObject
42−fromRecord = Native.JavaScript.fromRecord
43+fromRecord = Native.JavaScript.fromRecord
44+
45+{-| Turn a raw JavaScript object into a `Json.Value` as described in the
46+`Json` library.
47+-}
48+toJson : RawObject -> Json.Value
49+toJson = Native.Json.fromJS
50+
51+{-| Turn a `Json.Value` (as described in the `Json` library) into a raw
52+JavaScript object.
53+-}
54+fromJson : Json.Value -> RawObject
55+fromJson = Native.Json.toJS