function addMustacheTemplate(name, tmplStr) { // Break up the template and default options var tmplObj = jsonContentDemux(tmplStr), defaults = tmplObj.json || {}, tmpl = tmplObj.content; // Generate a function which processes objects through the mustache template function templateFn(itemObj) { // Set up the defaults for the item object _.defaults(itemObj.options, defaults); // Render the items via the template var retStr = mustache.render(tmpl, itemObj); return retStr; } // Save the template addTemplate(name, templateFn); }
templater.addHandlebarsTemplate = function (name, tmplStr) { // Break up the template and default options var tmplObj = jsonContentDemux(tmplStr); var defaults = tmplObj.json || {}; var tmpl = tmplObj.content; // Generate a function which processes objects through the handlebars template function templateFn(data) { // Set up the defaults for the data _.defaults(data.options, defaults); // If we want to transform our variables, then transform them var transformFn = _.identity; var variableNameTransforms = data.options.variableNameTransforms; if (variableNameTransforms) { assert(Array.isArray(variableNameTransforms), '`options.variableNameTransforms` was expected to be an array but it was not'); transformFn = function (str) { var strObj = _s(str); variableNameTransforms.forEach(function runTransform (transformKey) { strObj = strObj[transformKey](); }); return strObj.value(); }; } // Generate strings for our variables templater.ensureHandlebarsVariables(data, transformFn); templater.ensureHandlebarsVariables(data.spritesheet, transformFn); templater.ensureHandlebarsVariables(data.spritesheet_info, transformFn); data.sprites.forEach(function addHandlebarsVariables (sprite) { templater.ensureHandlebarsVariables(sprite, transformFn); }); // If we have retina data, generate strings for it as well if (data.retina_sprites) { data.retina_sprites.forEach(function addHandlebarsVariables (retinaSprite) { templater.ensureHandlebarsVariables(retinaSprite, transformFn); }); } if (data.retina_spritesheet_info) { templater.ensureHandlebarsVariables(data.retina_spritesheet_info, transformFn); } if (data.retina_groups) { data.retina_groups.forEach(function addHandlebarsVariables (retinaGroup) { templater.ensureHandlebarsVariables(retinaGroup, transformFn); }); } if (data.retina_groups_info) { templater.ensureHandlebarsVariables(data.retina_groups_info, transformFn); } // Render our template var retStr = handlebars.compile(tmpl)(data); return retStr; } // Save the template to our collection as well as handlebars for inheritance handlebars.registerPartial(name, tmpl); templater.addTemplate(name, templateFn); };