c9-core/node_modules/treehugger/lib/demo.js

49 wiersze
1.4 KiB
JavaScript

require({
baseUrl: "lib"
}, ["treehugger/tree", "treehugger/traverse", "treehugger/js/parse",
"acorn/dist/acorn", "acorn/dist/acorn_loose", "acorn/dist/walk"
], function(tree, traverse, parsejs, acorn, acorn_loose) {
var $ = document.querySelector.bind(document);
window.acorn_loose = acorn_loose;
if (localStorage.trehuggerJsVal)
$("#code").value = localStorage.trehuggerJsVal;
if (localStorage.trehuggerAnalysisVal)
$("#analysis").value = localStorage.trehuggerAnalysisVal;
window.onbeforeunload = function() {
localStorage.trehuggerJsVal = $("#code").value;
localStorage.trehuggerAnalysisVal = $("#analysis").value;
};
function log(message) {
$("#output").value = $("#output").value + message + "\n";
}
function exec() {
var js = $("#code").value;
var analysisJs = $("#analysis").value;
$("#output").value = "";
try {
var t = performance.now();
var ast = parsejs.parse(js);
t -= performance.now();
$("#ast").value = t + "\n" + ast.toPrettyString();
eval(analysisJs);
} catch(e) {
$("#output").value = "JS Error \n\t" + (e.stack || e.message);
console.log(e)
}
}
tree.Node.prototype.log = function() {
$("#output").value = this.toPrettyString();
}
$("#code").addEventListener("input", exec);
$("#runbutton").addEventListener("click", exec);
exec();
});