UNPKG

oppo

Version:

A lisp for javascript

57 lines (53 loc) 1.47 kB
// 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);