on 9e17f13 help sign in
elk/libraries/JavaScript/Experimental.elm
38 lines 1.2 kB history raw
1module JavaScript.Experimental where
2{-| A pair of very experimental functions for converting between
3Elm records and JavaScript objects. It currently uses a best effort
4conversion that can cause runtime errors. This API should change and
5improve as we find its key failings.
6-}
8import JavaScript (JSObject)
9import Native.JavaScript
11{-| Turn arbitrary JavaScript objects into Elm records.
12Arrays are converted into lists, nested objects are allowed.
13No `null` values or non-homogeneous arrays.
15 -- OK objects
16 { student:"Steve", scores:[83,94,99,72] }
17 { errorLevel:10, critical:true }
19 -- BAD objects
20 { answer:null }
21 { info:[true,42,'what'] }
22-}
23toRecord : JSObject -> a
24toRecord = Native.JavaScript.toRecord
26{-| Turn arbitrary Elm records into JavaScript objects.
27Lists become arrays, nested records are allowed. No ADTs.
29 -- OK records
30 { student="Steve", scores=[83,94,99,72] }
31 { errorLevel=10, critical=True }
33 -- BAD records
34 { answer = Nothing }
35 { result = Left "An error occurred" }
36-}
37fromRecord : a -> JSObject
38fromRecord = Native.JavaScript.fromRecord