on master help sign in
The beginnings of a JavaScript FFI
a29f60devancz
core-js/foriegn/JavaScript.jsnew file+48
@@ -0,0 +1,48 @@
1+
2+var Foriegn = function() {
3+ var JavaScript = function() {
4+ function castJSNumberToFloat(n) { return n; }
5+ function castFloatToJSNumber(n) { return n; }
6+
7+ function castJSNumberToInt(n) { return ~~n; }
8+ function castIntToJSNumber(n) { return n; }
9+
10+ var castJSElementToElement = Element.jsElement;
11+ function castElementToJSElement(elem) { return elem; }
12+
13+ function castJSArrayToList(arr) {
14+ var list = ["Nil"];
15+ for (var i = arr.length; i--; ) {
16+ list = [ "Cons", arr[i], list ];
17+ }
18+ return list;
19+ }
20+ function castListToJSArray(list) {
21+ var a = [];
22+ while (list[0] === "Cons") {
23+ a.push(list[1]);
24+ list = list[2];
25+ }
26+ return a;
27+ }
28+
29+ var castJSStringToString = castJSArrayToList
30+ function castStringToJSString(str) {
31+ if (typeof str === "string") return str;
32+ return castListToJSArray(str).join('');
33+ }
34+
35+ return {castJSNumberToFloat:castJSNumberToFloat,
36+ castFloatToJSNumber:castFloatToJSNumber,
37+ castJSNumberToInt:castJSNumberToInt,
38+ castIntToJSNumber:castIntToJSNumber,
39+ castJSElementToElement:castJSElementToElement,
40+ castElementToJSElement:castElementToJSElement,
41+ castJSArrayToList:castJSArrayToList,
42+ castListToJSArray:castListToJSArray,
43+ castJSStringToString:castJSStringToString,
44+ castStringToJSString:castStringToJSString
45+ };
46+ }();
47+ return {JavaScript:JavaScript};
48+}();