var shader = (function(){ var fn_str, fn, lex var exports = {} exports.init = function(){ lex = new Lex (0, 0) exports.build(demo_shader.innerHTML) } exports.build = function (fn_str){ new_fn = new Function('lex', 'x', 'y', fn_str) try { new_fn(lex, 0, 0) } catch (e) { throw 'Shader execution error' } exports.fn = fn = new_fn return fn } exports.run = function(canvas){ canvas.forEach(function(lex, y, x){ fn(lex, x, y) lex.build() }) } return exports })()