var dust = {}; (function(dust) { dust.cache = {}; dust.register = function(name, tmpl) { if (!name) return; dust.cache[name] = tmpl; }; dust.render = function(name, context, callback) { var chunk = new Stub(callback).head; dust.load(name, chunk, Context.wrap(context)).end(); }; dust.stream = function(name, context) { var stream = new Stream(); dust.nextTick(function() { dust.load(name, stream.head, Context.wrap(context)).end(); }); return stream; }; dust.renderSource = function(source, context, callback) { return dust.compileFn(source)(context, callback); }; dust.compileFn = function(source, name) { var tmpl = dust.loadSource(dust.compile(source, name)); return function(context, callback) { var master = callback ? new Stub(callback) : new Stream(); dust.nextTick(function() { tmpl(master.head, Context.wrap(context)).end(); }); return master; } }; dust.load = function(name, chunk, context) { var tmpl = dust.cache[name]; if (tmpl) { return tmpl(chunk, context); } else { if (dust.onLoad) { return chunk.map(function(chunk) { dust.onLoad(name, function(err, src) { if (err) return chunk.setError(err); if (!dust.cache[name]) dust.loadSource(dust.compile(src, name)); dust.cache[name](chunk, context).end(); }); }); } return chunk.setError(new Error("Template Not Found: " + name)); } }; dust.loadSource = function(source, path) { return eval(source); }; if (Array.isArray) { dust.isArray = Array.isArray; } else { dust.isArray = function(arr) { return Object.prototype.toString.call(arr) == "[object Array]"; }; } dust.nextTick = function(callback) { setTimeout(callback, 0); } dust.isEmpty = function(value) { if (dust.isArray(value) && !value.length) return true; if (value === 0) return false; return (!value); }; dust.filter = function(string, auto, filters) { if (filters) { for (var i=0, len=filters.length; i\"]/), AMP = /&/g, LT = //g, QUOT = /\"/g; dust.escapeHtml = function(s) { if (typeof s === "string") { if (!HCHARS.test(s)) { return s; } return s.replace(AMP,'&').replace(LT,'<').replace(GT,'>').replace(QUOT,'"'); } return s; }; var BS = /\\/g, CR = /\r/g, LS = /\u2028/g, PS = /\u2029/g, NL = /\n/g, LF = /\f/g, SQ = /'/g, DQ = /"/g, TB = /\t/g; dust.escapeJs = function(s) { if (typeof s === "string") { return s .replace(BS, '\\\\') .replace(DQ, '\\"') .replace(SQ, "\\'") .replace(CR, '\\r') .replace(LS, '\\u2028') .replace(PS, '\\u2029') .replace(NL, '\\n') .replace(LF, '\\f') .replace(TB, "\\t"); } return s; }; })(dust); if (typeof exports !== "undefined") { if (typeof process !== "undefined") { require('./server')(dust); } module.exports = dust; }