on fefb462 help sign in
elk/core-js/foreign/JavaScript.js
53 lines 1.5 kB history raw
2var Foreign = function() {
3 var JavaScript = function() {
4 function castJSBoolToBool(b) { return b; }
5 function castBoolToJSBool(b) { return b; }
7 function castJSNumberToFloat(n) { return n; }
8 function castFloatToJSNumber(n) { return n; }
10 function castJSNumberToInt(n) { return ~~n; }
11 function castIntToJSNumber(n) { return n; }
13 var castJSElementToElement = Element.jsElement;
14 function castElementToJSElement(elem) { return elem; }
16 function castJSArrayToList(arr) {
17 var list = ["Nil"];
18 for (var i = arr.length; i--; ) {
19 list = [ "Cons", arr[i], list ];
20 }
21 return list;
22 }
23 function castListToJSArray(list) {
24 var a = [];
25 while (list[0] === "Cons") {
26 a.push(list[1]);
27 list = list[2];
28 }
29 return a;
30 }
32 var castJSStringToString = castJSArrayToList
33 function castStringToJSString(str) {
34 if (typeof str === "string") return str;
35 return castListToJSArray(str).join('');
36 }
38 return {castJSBoolToBool:castJSBoolToBool,
39 castBoolToJSBool:castBoolToJSBool,
40 castJSNumberToFloat:castJSNumberToFloat,
41 castFloatToJSNumber:castFloatToJSNumber,
42 castJSNumberToInt:castJSNumberToInt,
43 castIntToJSNumber:castIntToJSNumber,
44 castJSElementToElement:castJSElementToElement,
45 castElementToJSElement:castElementToJSElement,
46 castJSArrayToList:castJSArrayToList,
47 castListToJSArray:castListToJSArray,
48 castJSStringToString:castJSStringToString,
49 castStringToJSString:castStringToJSString
50 };
51 }();
52 return {JavaScript:JavaScript};
53}();