diff options
Diffstat (limited to 'js/jquery.mustache.js')
-rw-r--r-- | js/jquery.mustache.js | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/js/jquery.mustache.js b/js/jquery.mustache.js deleted file mode 100644 index fcc47d1..0000000 --- a/js/jquery.mustache.js +++ /dev/null @@ -1,213 +0,0 @@ -/*! jQuery Mustache - v0.2.7 - 2013-01-30 -* https://github.com/jonnyreeves/jquery-Mustache -* Copyright (c) 2013 Jonny Reeves; Licensed MIT */ - -/*global jQuery, window */ -(function ($, window) { - 'use strict'; - - var templateMap = {}, - instance = null, - options = { - // Should an error be thrown if an attempt is made to render a non-existent template. If false, the - // operation will fail silently. - warnOnMissingTemplates: false, - - // Should an error be thrown if an attempt is made to overwrite a template which has already been added. - // If true the original template will be overwritten with the new value. - allowOverwrite: true, - - // The 'type' attribute which you use to denoate a Mustache Template in the DOM; eg: - // `<script type="text/html" id="my-template"></script>` - domTemplateType: 'text/html', - - // Specifies the `dataType` attribute used when external templates are loaded. - externalTemplateDataType: 'text' - }; - - function getMustache() { - // Lazily retrieve Mustache from the window global if it hasn't been defined by - // the User. - if (instance === null) { - instance = window.Mustache; - if (instance === void 0) { - $.error("Failed to locate Mustache instance, are you sure it has been loaded?"); - } - } - return instance; - } - - /** - * Returns true if the supplied templateName has been added. - */ - function has(templateName) { - return templateMap[templateName] !== void 0; - } - - /** - * Registers a template so that it can be used by $.Mustache. - * - * @param templateName A name which uniquely identifies this template. - * @param templateHtml The HTML which makes us the template; this will be rendered by Mustache when render() - * is invoked. - * @throws If options.allowOverwrite is false and the templateName has already been registered. - */ - function add(templateName, templateHtml) { - if (!options.allowOverwrite && has(templateName)) { - $.error('TemplateName: ' + templateName + ' is already mapped.'); - return; - } - templateMap[templateName] = $.trim(templateHtml); - } - - /** - * Adds one or more tempaltes from the DOM using either the supplied templateElementIds or by retrieving all script - * tags of the 'domTemplateType'. Templates added in this fashion will be registered with their elementId value. - * - * @param [...templateElementIds] List of element id's present on the DOM which contain templates to be added; - * if none are supplied all script tags that are of the same type as the - * `options.domTemplateType` configuration value will be added. - */ - function addFromDom() { - var templateElementIds; - - // If no args are supplied, all script blocks will be read from the document. - if (arguments.length === 0) { - templateElementIds = $('script[type="' + options.domTemplateType + '"]').map(function () { - return this.id; - }); - } - else { - templateElementIds = $.makeArray(arguments); - } - - $.each(templateElementIds, function() { - var templateElement = document.getElementById(this); - - if (templateElement === null) { - $.error('No such elementId: #' + this); - } - else { - add(this, $(templateElement).html()); - } - }); - } - - /** - * Removes a template, the contents of the removed Template will be returned. - * - * @param templateName The name of the previously registered Mustache template that you wish to remove. - * @returns String which represents the raw content of the template. - */ - function remove(templateName) { - var result = templateMap[templateName]; - delete templateMap[templateName]; - return result; - } - - /** - * Removes all templates and tells Mustache to flush its cache. - */ - function clear() { - templateMap = {}; - getMustache().clearCache(); - } - - /** - * Renders a previously added Mustache template using the supplied templateData object. Note if the supplied - * templateName doesn't exist an empty String will be returned. - */ - function render(templateName, templateData) { - if (!has(templateName)) { - if (options.warnOnMissingTemplates) { - $.error('No template registered for: ' + templateName); - } - return ''; - } - return getMustache().to_html(templateMap[templateName], templateData, templateMap); - } - - /** - * Loads the external Mustache templates located at the supplied URL and registers them for later use. This method - * returns a jQuery Promise and also support an `onComplete` callback. - * - * @param url URL of the external Mustache template file to load. - * @param onComplete Optional callback function which will be invoked when the templates from the supplied URL - * have been loaded and are ready for use. - * @returns jQuery deferred promise which will complete when the templates have been loaded and are - * ready for use. - */ - function load(url, onComplete) { - return $.ajax({ - url: url, - dataType: options.externalTemplateDataType - }).done(function (templates) { - $(templates).filter('script').each(function (i, el) { - add(el.id, $(el).html()); - }); - - if ($.isFunction(onComplete)) { - onComplete(); - } - }); - } - - /** - * Returns an Array of templateNames which have been registered and can be retrieved via - * $.Mustache.render() or $(element).mustache(). - */ - function templates() { - return $.map(templateMap, function (value, key) { - return key; - }); - } - - // Expose the public methods on jQuery.Mustache - $.Mustache = { - options: options, - load: load, - add: add, - addFromDom: addFromDom, - remove: remove, - clear: clear, - render: render, - templates: templates, - instance: instance - }; - - /** - * Renders one or more viewModels into the current jQuery element. - * - * @param templateName The name of the Mustache template you wish to render, Note that the - * template must have been previously loaded and / or added. - * @param templateData One or more JavaScript objects which will be used to render the Mustache - * template. - * @param options.method jQuery method to use when rendering, defaults to 'append'. - */ - $.fn.mustache = function (templateName, templateData, options) { - var settings = $.extend({ - method: 'append' - }, options); - - var renderTemplate = function (obj, viewModel) { - $(obj)[settings.method](render(templateName, viewModel)); - }; - - return this.each(function () { - var element = this; - - // Render a collection of viewModels. - if ($.isArray(templateData)) { - $.each(templateData, function () { - renderTemplate(element, this); - }); - } - - // Render a single viewModel. - else { - renderTemplate(element, templateData); - } - }); - }; - -}(jQuery, window));
\ No newline at end of file |