The beginnings of a JavaScript FFI
This commit is contained in:
parent
9fb67b46a1
commit
a29f60dc24
1 changed files with 48 additions and 0 deletions
48
core-js/foriegn/JavaScript.js
Normal file
48
core-js/foriegn/JavaScript.js
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
|
||||||
|
var Foriegn = function() {
|
||||||
|
var JavaScript = function() {
|
||||||
|
function castJSNumberToFloat(n) { return n; }
|
||||||
|
function castFloatToJSNumber(n) { return n; }
|
||||||
|
|
||||||
|
function castJSNumberToInt(n) { return ~~n; }
|
||||||
|
function castIntToJSNumber(n) { return n; }
|
||||||
|
|
||||||
|
var castJSElementToElement = Element.jsElement;
|
||||||
|
function castElementToJSElement(elem) { return elem; }
|
||||||
|
|
||||||
|
function castJSArrayToList(arr) {
|
||||||
|
var list = ["Nil"];
|
||||||
|
for (var i = arr.length; i--; ) {
|
||||||
|
list = [ "Cons", arr[i], list ];
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
function castListToJSArray(list) {
|
||||||
|
var a = [];
|
||||||
|
while (list[0] === "Cons") {
|
||||||
|
a.push(list[1]);
|
||||||
|
list = list[2];
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
var castJSStringToString = castJSArrayToList
|
||||||
|
function castStringToJSString(str) {
|
||||||
|
if (typeof str === "string") return str;
|
||||||
|
return castListToJSArray(str).join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
return {castJSNumberToFloat:castJSNumberToFloat,
|
||||||
|
castFloatToJSNumber:castFloatToJSNumber,
|
||||||
|
castJSNumberToInt:castJSNumberToInt,
|
||||||
|
castIntToJSNumber:castIntToJSNumber,
|
||||||
|
castJSElementToElement:castJSElementToElement,
|
||||||
|
castElementToJSElement:castElementToJSElement,
|
||||||
|
castJSArrayToList:castJSArrayToList,
|
||||||
|
castListToJSArray:castListToJSArray,
|
||||||
|
castJSStringToString:castJSStringToString,
|
||||||
|
castStringToJSString:castStringToJSString
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
return {JavaScript:JavaScript};
|
||||||
|
}();
|
Loading…
Reference in a new issue