var handlebars = require("handlebars/parser").parser; // BEGIN(BROWSER) var Handlebars = {}; Handlebars.Parser = handlebars; Handlebars.parse = function(string) { Handlebars.Parser.yy = Handlebars.AST; return Handlebars.Parser.parse(string); }; Handlebars.print = function(ast) { return new Handlebars.PrintVisitor().accept(ast); }; Handlebars.compile = function(string) { var ast = Handlebars.parse(string); return function(context, helpers, partials) { var helpers, partials; if(!helpers) { helpers = Handlebars.helpers; } if(!partials) { partials = Handlebars.partials; } var internalContext = new Handlebars.Context(context, helpers, partials); var runtime = new Handlebars.Runtime(internalContext); runtime.accept(ast); return runtime.buffer; }; }; Handlebars.helpers = {}; Handlebars.partials = {}; Handlebars.registerHelper = function(name, fn, inverse) { if(inverse) { fn.not = inverse; } this.helpers[name] = fn; }; Handlebars.registerPartial = function(name, str) { this.partials[name] = str; }; Handlebars.registerHelper('blockHelperMissing', function(context, fn, inverse) { inverse = inverse || function() {}; var ret = ""; var type = Object.prototype.toString.call(context); if(type === "[object Function]") { context = context(); } if(context === true) { return fn(this); } else if(context === false || context == null) { return inverse(this); } else if(type === "[object Array]") { if(context.length > 0) { for(var i=0, j=context.length; i 0) { for(var i=0, j=context.length; i