StructureJS
0.13.0A class based utility library for building modular and scalable web platform applications. Features opt-in classes and utilities which provide a solid foundation and toolset to build your next project.
(function (factory) { if (typeof module === 'object' && typeof module.exports === 'object') { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === 'function' && define.amd) { define(["require", "exports", './StringUtil'], factory); } })(function (require, exports) { "use strict"; var StringUtil_1 = require('./StringUtil'); /** * A helper class to provide a convenient and consistent way to render templates. * * @class TemplateFactory * @module StructureJS * @submodule util * @requires StringUtil * @requires Handlebars * @author Robert S. (www.codeBelt.com) * @static */ var TemplateFactory = (function () { function TemplateFactory() { throw new Error('[TemplateFactory] Do not instantiate the TemplateFactory class because it is a static class.'); } /** * Creates a template. * * @method create * @param templatePath {any} * @param [data=any] * @returns {string} * @public * @static * @example * TemplateFactory.create('templateName', {some: 'data'}); */ TemplateFactory.create = function (templatePath, data) { if (data === void 0) { data = null; } //Checks the first character to see if it is a '.' or '#'. var regex = /^([.#])(.+)/; var template = null; var isFunctionTemplate = typeof templatePath === 'function'; var isClassOrIdName = regex.test(templatePath); if (isFunctionTemplate) { template = templatePath(data); } else if (isClassOrIdName) { // Remove pound sign from the id name. templatePath = templatePath.substring(1); var htmlString = document.getElementById(templatePath).innerHTML; htmlString = StringUtil_1.default.removeLeadingTrailingWhitespace(htmlString); if (TemplateFactory.templateEngine == TemplateFactory.UNDERSCORE) { // Underscore Template: var templateMethod = window['_'].template(htmlString); template = templateMethod(data); } else { // Handlebars Template var templateMethod = Handlebars.compile(htmlString); template = templateMethod(data); } } else { var templateObj = window[TemplateFactory.templateNamespace]; if (!templateObj) { // Returns null because the template namespace is not found. return null; } var templateFunction = templateObj[templatePath]; if (templateFunction) { // The templatePath gets a function storage in the associative array. // We call the function by passing in the data as the argument. template = templateFunction(data); } } return template; }; /** * A constant value for using Underscore or Lodash templates. * * @property UNDERSCORE * @type {string} * @public * @final * @static */ TemplateFactory.UNDERSCORE = 'underscore'; /** * A constant value for using Handlebars templates. This is the default template engine. * * @property HANDLEBARS * @type {string} * @public * @final * @static */ TemplateFactory.HANDLEBARS = 'handlebars'; /** * Sets the template engine type for this TemplateFactory class. The default is TemplateFactory.HANDLEBARS * * @property templateEngine * @type {string} * @default TemplateFactory.HANDLEBARS * @public * @static */ TemplateFactory.templateEngine = TemplateFactory.HANDLEBARS; /** * The global namespace for pre-compiled templates. * * @property templateNamespace * @type {string} * @default 'JST' * @public * @static */ TemplateFactory.templateNamespace = 'JST'; return TemplateFactory; }()); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = TemplateFactory; });