Current Path : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/ |
Current File : C:/Users/Mahmood/Desktop/moodle/lib/amd/build/mustache.min.js.map |
{"version":3,"sources":["../src/mustache.js"],"names":["global","factory","exports","nodeName","define","amd","Mustache","mustache","objectToString","Object","prototype","toString","isArray","Array","object","call","isFunction","typeStr","obj","escapeRegExp","string","replace","hasProperty","propName","primitiveHasOwnProperty","primitive","hasOwnProperty","regExpTest","RegExp","test","testRegExp","re","isWhitespace","entityMap","equalsRe","parseTemplate","template","tags","lineHasNonSpace","sections","tokens","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","length","pop","openingTagRe","closingTagRe","closingCurlyRe","compileTags","tagsToCompile","split","Error","scanner","Scanner","start","type","value","chr","token","openSection","eos","pos","scanUntil","i","valueLength","charAt","push","scan","nestTokens","squashTokens","squashedTokens","lastToken","numTokens","nestedTokens","collector","section","tail","match","index","substring","search","Context","view","parentContext","blocks","cache","parent","setBlockVar","name","clearBlockVars","getBlockVar","lookup","context","intermediateValue","names","lookupHit","indexOf","Writer","clearCache","parse","cacheKey","join","render","partials","renderTokens","originalTemplate","buffer","symbol","renderSection","renderInverted","renderPartial","renderBlock","renderBlockVariable","unescapedValue","escapedValue","rawValue","self","subRender","j","slice","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","result","exists","escape","version","defaultWriter","TypeError","to_html","send","s"],"mappings":"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","sourcesContent":["// The MIT License\n//\n// Copyright (c) 2009 Chris Wanstrath (Ruby)\n// Copyright (c) 2010-2014 Jan Lehnardt (JavaScript)\n// Copyright (c) 2010-2015 The mustache.js community\n//\n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n//\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n//\n\n// Description of import into Moodle:\n// Checkout from https://github.com/moodle/custom-mustache.js Branch: LAMBDA_ARGS\n// Rebase onto latest release tag from https://github.com/janl/mustache.js\n// Copy mustache.js into lib/amd/src/ in Moodle folder.\n// Add the license as a comment to the file and these instructions.\n// Add jshint tags so this file is not linted.\n// Remove the \"global define:\" comment (hint for linter)\n// Make sure that you have not removed the custom code for '$' and '<'.\n\n/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/* jshint ignore:start */\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n /**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\n function primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!|\\$|</;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^' || type === '$' || type === '<') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '$':\n case '<':\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.blocks = {};\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Set a value in the current block context.\n */\n Context.prototype.setBlockVar = function set (name, value) {\n var blocks = this.blocks;\n\n blocks[name] = value;\n\n return value;\n };\n\n /**\n * Clear all current block vars.\n */\n Context.prototype.clearBlockVars = function clearBlockVars () {\n this.blocks = {};\n };\n\n /**\n * Get a value only from the current block context.\n */\n Context.prototype.getBlockVar = function getBlockVar (name) {\n var blocks = this.blocks;\n\n var value;\n if (blocks.hasOwnProperty(name)) {\n value = blocks[name];\n } else {\n if (this.parent) {\n value = this.parent.getBlockVar(name);\n }\n }\n // Can return undefined.\n return value;\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var tokens = cache[cacheKey];\n\n if (tokens == null)\n tokens = cache[cacheKey] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `tags` argument is given here it must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n */\n Writer.prototype.render = function render (template, view, partials, tags) {\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template, tags);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, tags) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, tags);\n else if (symbol === '<') value = this.renderBlock(token, context, partials, originalTemplate);\n else if (symbol === '$') value = this.renderBlockVariable(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials, tags) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n return this.renderTokens(this.parse(indentedValue, tags), context, partials, indentedValue);\n }\n };\n\n Writer.prototype.renderBlock = function renderBlock (token, context, partials, originalTemplate) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n // Ignore any wrongly set block vars before we started.\n context.clearBlockVars();\n // We are only rendering to record the default block variables.\n this.renderTokens(token[4], context, partials, originalTemplate);\n // Now we render and return the result.\n var result = this.renderTokens(this.parse(value), context, partials, value);\n // Don't leak the block variables outside this include.\n context.clearBlockVars();\n return result;\n };\n\n Writer.prototype.renderBlockVariable = function renderBlockVariable (token, context, partials, originalTemplate) {\n var value = token[1];\n\n var exists = context.getBlockVar(value);\n if (!exists) {\n context.setBlockVar(value, originalTemplate.slice(token[3], token[5]));\n return this.renderTokens(token[4], context, partials, originalTemplate);\n } else {\n return this.renderTokens(this.parse(exists), context, partials, exists);\n }\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '3.1.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer. If the optional `tags` argument is given here it must be an\n * array with two string values: the opening and closing tags used in the\n * template (e.g. [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n */\n mustache.render = function render (template, view, partials, tags) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, tags);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n/* jshint ignore:end */\n"],"file":"mustache.min.js"}