oppo
Version:
A lisp for javascript
57 lines (53 loc) • 1.47 kB
JavaScript
// Generated by CoffeeScript 1.3.3
(function() {
var _;
_ = require("underscore");
$.domReady(function() {
var $js, $oppo, $result, cache, compile, compile_and_compute_result, compute_result, oppo_code_cache_key, timeout;
$oppo = $('#oppo');
$js = $('#js');
$result = $('#result');
cache = $.cache("try-oppo");
oppo_code_cache_key = "oppo-code";
compute_result = function() {
var evald, js, result;
js = $js.val();
try {
evald = eval(js);
result = oppo.stringify_html(evald);
} catch (e) {
result = e;
}
if (typeof result === 'undefined') {
result = 'undefined';
} else {
result = "" + result;
}
return $result.html(result);
};
compile = function() {
var ast, code, err, js, oppo_code;
code = oppo_code = $oppo.val();
cache.set(oppo_code_cache_key, code);
err = null;
try {
ast = oppo.read(code);
js = oppo.compile(ast);
} catch (e) {
js = "/* " + e + " */";
err = e;
}
$js.val(js);
if (err) {
throw err;
}
};
compile_and_compute_result = _.compose(compute_result, compile);
timeout = null;
$oppo.keyup(function() {
clearTimeout(timeout);
return timeout = setTimeout(compile_and_compute_result, 500);
});
return $oppo.val(cache.get(oppo_code_cache_key || '')).keyup();
});
}).call(this);