on master help sign in
Add functions to convert between RawObjects and Json.Values
commit6c3af882654c1632242af7ee1cce19b2f9446064 authorEvan Czaplicki <info@elm-lang.org> dateTue 25 Mar 2014, 23:28 (13 years ago) parent298210a
2 files changed+29−14
libraries/JavaScript/Experimental.elm+26−13 libraries/Native/Json.js+3−1
libraries/JavaScript/Experimental.elm+26−13
@@ -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
libraries/Native/Json.js+3−1
@@ -63,8 +63,10 @@ Elm.Native.Json.make = function(elm) {
6363 }
6464
6565 return elm.Native.Json.values = {
66− toString : F2(toString),
66+ toString : F2(toString),
6767 fromString : fromString,
68+ fromJS : fromJS,
69+ toJS : toJS,
6870 };
6971
7072};