lispyscript
Version:
A JavaScript with Lispy Syntax and Macros
49 lines (48 loc) • 1.89 kB
JavaScript
// Generated by LispyScript v0.3.3
define(function(require,exports,module) {
var ls = require("../lib/ls");
exports.eval = function(code,url) {
return eval(ls._compile(code,url));
};
exports.run = function(code,url) {
return Function(ls._compile(code,url))();
};
exports.load = function(url,callback) {
var request = (window.XMLHttpRequest ?
new XMLHttpRequest() :
new ActiveXObject("Microsoft.XMLHTTP"));
request.open("GET",url,true);
(request.overrideMimeType ?
request.overrideMimeType("text/plain") :
undefined);
request.onreadystatechange = function() {
return ((request.readyState === 4) ?
(((request.status === 0) || (request.status === 200)) ?
callback(exports.run(request.responseText,url)) :
callback("Could not load")) :
undefined);
};
return request.send(null);
};
var runScripts = function() {
var scripts = Array.prototype.filter.call(document.getElementsByTagName("script"),function(script) {
return (script.type === "application/lispyscript");
});
var next = function() {
return (scripts.length ?
(function() {
var script = scripts.shift();
return (script.src ?
exports.load(script.src,next) :
next(exports.run(script.innerHTML)));
})() :
undefined);
};
return next();
};
return (((document.readyState === "complete") || (document.readyState === "interactive")) ?
runScripts() :
(window.addEventListener ?
addEventListener("DOMContentLoaded",runScripts,false) :
attachEvent("onload",runScripts)));
});