'use strict'; define( [ 'handlebars' ], function (Handlebars) { var _fieldBuilder = function (field) { if (!field.type) { return _templateRenderer.apply(field, [ 'Form/TextboxTemplate' ]); } if (field.type === 'password') { return _templateRenderer.apply(field, [ 'Form/PasswordTemplate' ]); } if (field.type === 'checkbox') { return _templateRenderer.apply(field, [ 'Form/CheckboxTemplate' ]); } if (field.type === 'select') { return _templateRenderer.apply(field, [ 'Form/SelectTemplate' ]); } return _templateRenderer.apply(field, [ 'Form/TextboxTemplate' ]); }; var _templateRenderer = function (templateName) { var templateFunction = Marionette.TemplateCache.get(templateName); return new Handlebars.SafeString(templateFunction(this)); }; Handlebars.registerHelper('formBuilder', function () { var ret = ''; _.each(this.fields, function (field) { ret += _fieldBuilder(field); }); return new Handlebars.SafeString(ret); }); });