var requirejs = require("requirejs"); requirejs.config({ nodeRequire: require }); require = requirejs; requirejs(["streamline/lib/callbacks/transform", "streamline/lib/callbacks/runtime"], function(transform, runtime) { "use strict"; var __rt = runtime.runtime("test"), __func = __rt.__func, __cb = __rt.__cb, __trap = __rt.__trap; function streamline(js) { var streamlinejs = transform.transform(js, { noHelpers: true, lines: "ignore" }); return new Function("data", "resolvePartial", "resolveVariable", "callback", "__func", "__cb", "__trap", streamlinejs); } function resolvePartial(name, callback) { var template = ""; template += "var res = '';\n"; template += "res += 'partial:" + name + "\n';\n"; template += "callback(null, res);\n"; var fn = streamline(template); callback(null, fn); } function resolveVariable(name, callback) { setTimeout(function() { callback(null, 'variable:' + name + '\n'); }, 500); } var template = ""; template += "var res = '';\n"; template += "if (data.a && data.a > 0) {\n"; template += " setTimeout(_, 1000);\n"; template += " res += 'a > 0\n';\n"; template += " if (data.a === 1) {\n"; template += " res += 'a = 1\n';\n"; template += " }\n"; template += "} else {\n"; template += " res += 'a < 0\n';\n"; template += "}\n"; template += "res += resolvePartial('test', _)(data, resolvePartial, resolveVariable, _);\n"; template += "res += resolveVariable('test', _);\n"; template += "res += 'bye!'\n"; template += "callback(null, res);\n"; var fn = streamline(template); var data = {a: 1}; fn(data, resolvePartial, resolveVariable, function(err, res) { console.log("done:\n" + res); }, __func, __cb, __trap); });