Exemple #1
0
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);
};