Comparing version 2.1.1 to 2.1.2
111
CHANGELOG.md
@@ -6,2 +6,8 @@ # Change Log | ||
## [2.1.2] / 17 June 2015 | ||
### Added | ||
* Mustache global definition ([#466]) by [@yousefcisco]. | ||
## [2.1.1] / 11 June 2015 | ||
@@ -11,12 +17,12 @@ | ||
* State that we use semver on the change log, by @dasilvacontin. | ||
* Added version links to change log, by @dasilvacontin. | ||
* State that we use semver on the change log, by [@dasilvacontin]. | ||
* Added version links to change log, by [@dasilvacontin]. | ||
### Fixed | ||
* Bugfix for using values from view's context prototype, by @phillipj. | ||
* Improve test with undefined/null lookup hit using dot notation, by @dasilvacontin. | ||
* Bugfix for null/undefined lookup hit when using dot notation, by @phillipj. | ||
* Remove moot `version` property from bower.json, by @kkirsche. | ||
* bower.json doesn't require a version bump via hook, by @dasilvacontin. | ||
* Bugfix for using values from view's context prototype, by [@phillipj]. | ||
* Improve test with undefined/null lookup hit using dot notation, by [@dasilvacontin]. | ||
* Bugfix for null/undefined lookup hit when using dot notation, by [@phillipj]. | ||
* Remove moot `version` property from bower.json, by [@kkirsche]. | ||
* bower.json doesn't require a version bump via hook, by [@dasilvacontin]. | ||
@@ -26,33 +32,33 @@ | ||
* Added license attribute to package.json, by @pgilad. | ||
* Minor changes to make mustache.js compatible with both WSH and ASP, by @nagaozen. | ||
* Improve CLI view parsing error, by @phillipj. | ||
* Bugfix for view context cache, by @phillipj. | ||
* Added license attribute to package.json, by [@pgilad]. | ||
* Minor changes to make mustache.js compatible with both WSH and ASP, by [@nagaozen]. | ||
* Improve CLI view parsing error, by [@phillipj]. | ||
* Bugfix for view context cache, by [@phillipj]. | ||
## [2.0.0] / 27 Mar 2015 | ||
* Fixed lookup not stopping upon finding `undefined` or `null` values, by @dasilvacontin. | ||
* Refactored pre-commit hook, by @dasilvacontin. | ||
* Fixed lookup not stopping upon finding `undefined` or `null` values, by [@dasilvacontin]. | ||
* Refactored pre-commit hook, by [@dasilvacontin]. | ||
## [1.2.0] / 24 Mar 2015 | ||
* Added -v option to CLI, by @phillipj. | ||
* Bugfix for rendering Number when it serves as the Context, by @phillipj. | ||
* Specified files in package.json for a cleaner install, by @phillipj. | ||
* Added -v option to CLI, by [@phillipj]. | ||
* Bugfix for rendering Number when it serves as the Context, by [@phillipj]. | ||
* Specified files in package.json for a cleaner install, by [@phillipj]. | ||
## [1.1.0] / 18 Feb 2015 | ||
* Refactor Writer.renderTokens() for better readability, by @phillipj. | ||
* Cleanup tests section in readme, by @phillipj. | ||
* Added JSHint to tests/CI, by @phillipj. | ||
* Added node v0.12 on travis, by @phillipj. | ||
* Created command line tool, by @phillipj. | ||
* Added *falsy* to Inverted Sections description in README, by @kristijanmatic. | ||
* Refactor Writer.renderTokens() for better readability, by [@phillipj]. | ||
* Cleanup tests section in readme, by [@phillipj]. | ||
* Added JSHint to tests/CI, by [@phillipj]. | ||
* Added node v0.12 on travis, by [@phillipj]. | ||
* Created command line tool, by [@phillipj]. | ||
* Added *falsy* to Inverted Sections description in README, by [@kristijanmatic]. | ||
## [1.0.0] / 20 Dec 2014 | ||
* Inline tag compilation, by @mjackson. | ||
* Fixed AMD registration, volo package.json entry, by @jrburke. | ||
* Added spm support, by @afc163. | ||
* Only access properties of objects on Context.lookup, by @cmbuckley. | ||
* Inline tag compilation, by [@mjackson]. | ||
* Fixed AMD registration, volo package.json entry, by [@jrburke]. | ||
* Added spm support, by [@afc163]. | ||
* Only access properties of objects on Context.lookup, by [@cmbuckley]. | ||
@@ -81,3 +87,3 @@ ## [0.8.2] / 17 Mar 2014 | ||
functions in order to be able to extract the portion of the template | ||
that was contained by that section. Fixes #262. | ||
that was contained by that section. Fixes [#262]. | ||
* Performance improvements. | ||
@@ -87,3 +93,3 @@ | ||
* Fixed a rendering bug (#274) when using nested higher-order sections. | ||
* Fixed a rendering bug ([#274]) when using nested higher-order sections. | ||
* Better error reporting on failed parse. | ||
@@ -94,6 +100,6 @@ * Converted tests to use mocha instead of vows. | ||
* Handle empty templates gracefully. Fixes #265, #267, and #270. | ||
* Cache partials by template, not by name. Fixes #257. | ||
* Handle empty templates gracefully. Fixes [#265], [#267], and [#270]. | ||
* Cache partials by template, not by name. Fixes [#257]. | ||
* Added Mustache.compileTokens to compile the output of Mustache.parse. Fixes | ||
#258. | ||
[#258]. | ||
@@ -104,3 +110,3 @@ ## [0.7.0] / 10 Sep 2012 | ||
* Allow partials to be loaded dynamically using a callback (thanks | ||
@TiddoLangerak for the suggestion). | ||
[@TiddoLangerak] for the suggestion). | ||
* Fixed a bug with higher-order sections that prevented them from being | ||
@@ -112,4 +118,4 @@ passed the raw text of the section from the original template. | ||
* Allow partials to be passed to the pre-compiled function (thanks | ||
@fallenice). | ||
* Don't use eval (thanks @cweider). | ||
[@fallenice]). | ||
* Don't use eval (thanks [@cweider]). | ||
@@ -119,8 +125,9 @@ ## [0.6.0] / 31 Aug 2012 | ||
* Use JavaScript's definition of falsy when determining whether to render an | ||
inverted section or not. Issue #186. | ||
inverted section or not. Issue [#186]. | ||
* Use Mustache.escape to escape values inside {{}}. This function may be | ||
reassigned to alter the default escaping behavior. Issue #244. | ||
* Fixed a bug that clashed with QUnit (thanks @kannix). | ||
* Added volo support (thanks @guybedford). | ||
reassigned to alter the default escaping behavior. Issue [#244]. | ||
* Fixed a bug that clashed with QUnit (thanks [@kannix]). | ||
* Added volo support (thanks [@guybedford]). | ||
[2.1.2]: https://github.com/janl/mustache.js/compare/v2.1.1...v2.1.2 | ||
[2.1.1]: https://github.com/janl/mustache.js/compare/v2.1.0...v2.1.1 | ||
@@ -140,1 +147,29 @@ [2.1.0]: https://github.com/janl/mustache.js/compare/v2.0.0...v2.1.0 | ||
[0.6.0]: https://github.com/janl/mustache.js/compare/0.5.2...0.6.0 | ||
[#186]: https://github.com/janl/mustache.js/issues/186 | ||
[#244]: https://github.com/janl/mustache.js/issues/244 | ||
[#257]: https://github.com/janl/mustache.js/issues/257 | ||
[#258]: https://github.com/janl/mustache.js/issues/258 | ||
[#262]: https://github.com/janl/mustache.js/issues/262 | ||
[#265]: https://github.com/janl/mustache.js/issues/265 | ||
[#267]: https://github.com/janl/mustache.js/issues/267 | ||
[#270]: https://github.com/janl/mustache.js/issues/270 | ||
[#274]: https://github.com/janl/mustache.js/issues/274 | ||
[#466]: https://github.com/janl/mustache.js/issues/466 | ||
[@TiddoLangerak]: https://github.com/TiddoLangerak | ||
[@afc163]: https://github.com/afc163 | ||
[@cmbuckley]: https://github.com/cmbuckley | ||
[@cweider]: https://github.com/cweider | ||
[@dasilvacontin]: https://github.com/dasilvacontin | ||
[@fallenice]: https://github.com/fallenice | ||
[@guybedford]: https://github.com/guybedford | ||
[@jrburke]: https://github.com/jrburke | ||
[@kannix]: https://github.com/kannix | ||
[@kkirsche]: https://github.com/kkirsche | ||
[@kristijanmatic]: https://github.com/kristijanmatic | ||
[@mjackson]: https://github.com/mjackson | ||
[@nagaozen]: https://github.com/nagaozen | ||
[@pgilad]: https://github.com/pgilad | ||
[@phillipj]: https://github.com/phillipj | ||
[@yousefcisco]: https://github.com/yousefcisco |
@@ -14,3 +14,3 @@ /*! | ||
} else { | ||
Mustache = {}; | ||
global.Mustache = {}; | ||
factory(Mustache); // script, wsh, asp | ||
@@ -561,3 +561,3 @@ } | ||
mustache.name = 'mustache.js'; | ||
mustache.version = '2.1.1'; | ||
mustache.version = '2.1.2'; | ||
mustache.tags = [ '{{', '}}' ]; | ||
@@ -564,0 +564,0 @@ |
@@ -1,1 +0,1 @@ | ||
(function defineMustache(global,factory){if(typeof exports==="object"&&exports){factory(exports)}else if(typeof define==="function"&&define.amd){define(["exports"],factory)}else{Mustache={};factory(Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function escapeHtml(string){return String(string).replace(/[&<>"'\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i<valueLength;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length)}else{nonSpace=true}tokens.push(["text",chr,start,start+1]);start+=1;if(chr==="\n")stripSpace()}}if(!scanner.scan(openingTagRe))break;hasTag=true;type=scanner.scan(tagRe)||"name";scanner.scan(whiteRe);if(type==="="){value=scanner.scanUntil(equalsRe);scanner.scan(equalsRe);scanner.scanUntil(closingTagRe)}else if(type==="{"){value=scanner.scanUntil(closingCurlyRe);scanner.scan(curlyRe);scanner.scanUntil(closingTagRe);type="&"}else{value=scanner.scanUntil(closingTagRe)}if(!scanner.scan(closingTagRe))throw new Error("Unclosed tag at "+scanner.pos);token=[type,value,start,scanner.pos];tokens.push(token);if(type==="#"||type==="^"){sections.push(token)}else if(type==="/"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section "'+value+'" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section "'+openSection[1]+'" at '+start)}else if(type==="name"||type==="{"||type==="&"){nonSpace=true}else if(type==="="){compileTags(value)}}openSection=sections.pop();if(openSection)throw new Error('Unclosed section "'+openSection[1]+'" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];if(token){if(token[0]==="text"&&lastToken&&lastToken[0]==="text"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{squashedTokens.push(token);lastToken=token}}}return squashedTokens}function nestTokens(tokens){var nestedTokens=[];var collector=nestedTokens;var sections=[];var token,section;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];switch(token[0]){case"#":case"^":collector.push(token);sections.push(token);collector=token[4]=[];break;case"/":section=sections.pop();section[5]=token[2];collector=sections.length>0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===""};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return"";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail="";break;case 0:match="";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={".":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,names,index,lookupHit=false;while(context){if(name.indexOf(".")>0){value=context.view;names=name.split(".");index=0;while(value!=null&&index<names.length){if(index===names.length-1)lookupHit=hasProperty(value,names[index]);value=value[names[index++]]}}else{value=context.view[name];lookupHit=hasProperty(context.view,name)}if(lookupHit)break;context=context.parent}cache[name]=value}if(isFunction(value))value=value.call(this.view);return value};function Writer(){this.cache={}}Writer.prototype.clearCache=function clearCache(){this.cache={}};Writer.prototype.parse=function parse(template,tags){var cache=this.cache;var tokens=cache[template];if(tokens==null)tokens=cache[template]=parseTemplate(template,tags);return tokens};Writer.prototype.render=function render(template,view,partials){var tokens=this.parse(template);var context=view instanceof Context?view:new Context(view);return this.renderTokens(tokens,context,partials,template)};Writer.prototype.renderTokens=function renderTokens(tokens,context,partials,originalTemplate){var buffer="";var token,symbol,value;for(var i=0,numTokens=tokens.length;i<numTokens;++i){value=undefined;token=tokens[i];symbol=token[0];if(symbol==="#")value=this.renderSection(token,context,partials,originalTemplate);else if(symbol==="^")value=this.renderInverted(token,context,partials,originalTemplate);else if(symbol===">")value=this.renderPartial(token,context,partials,originalTemplate);else if(symbol==="&")value=this.unescapedValue(token,context);else if(symbol==="name")value=this.escapedValue(token,context);else if(symbol==="text")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer="";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j<valueLength;++j){buffer+=this.renderTokens(token[4],context.push(value[j]),partials,originalTemplate)}}else if(typeof value==="object"||typeof value==="string"||typeof value==="number"){buffer+=this.renderTokens(token[4],context.push(value),partials,originalTemplate)}else if(isFunction(value)){if(typeof originalTemplate!=="string")throw new Error("Cannot use higher-order sections without the original template");value=value.call(context.view,originalTemplate.slice(token[3],token[5]),subRender);if(value!=null)buffer+=value}else{buffer+=this.renderTokens(token[4],context,partials,originalTemplate)}return buffer};Writer.prototype.renderInverted=function renderInverted(token,context,partials,originalTemplate){var value=context.lookup(token[1]);if(!value||isArray(value)&&value.length===0)return this.renderTokens(token[4],context,partials,originalTemplate)};Writer.prototype.renderPartial=function renderPartial(token,context,partials){if(!partials)return;var value=isFunction(partials)?partials(token[1]):partials[token[1]];if(value!=null)return this.renderTokens(this.parse(value),context,partials,value)};Writer.prototype.unescapedValue=function unescapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return value};Writer.prototype.escapedValue=function escapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return mustache.escape(value)};Writer.prototype.rawValue=function rawValue(token){return token[1]};mustache.name="mustache.js";mustache.version="2.1.1";mustache.tags=["{{","}}"];var defaultWriter=new Writer;mustache.clearCache=function clearCache(){return defaultWriter.clearCache()};mustache.parse=function parse(template,tags){return defaultWriter.parse(template,tags)};mustache.render=function render(template,view,partials){return defaultWriter.render(template,view,partials)};mustache.to_html=function to_html(template,view,partials,send){var result=mustache.render(template,view,partials);if(isFunction(send)){send(result)}else{return result}};mustache.escape=escapeHtml;mustache.Scanner=Scanner;mustache.Context=Context;mustache.Writer=Writer}); | ||
(function defineMustache(global,factory){if(typeof exports==="object"&&exports){factory(exports)}else if(typeof define==="function"&&define.amd){define(["exports"],factory)}else{global.Mustache={};factory(Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function escapeHtml(string){return String(string).replace(/[&<>"'\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i<valueLength;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length)}else{nonSpace=true}tokens.push(["text",chr,start,start+1]);start+=1;if(chr==="\n")stripSpace()}}if(!scanner.scan(openingTagRe))break;hasTag=true;type=scanner.scan(tagRe)||"name";scanner.scan(whiteRe);if(type==="="){value=scanner.scanUntil(equalsRe);scanner.scan(equalsRe);scanner.scanUntil(closingTagRe)}else if(type==="{"){value=scanner.scanUntil(closingCurlyRe);scanner.scan(curlyRe);scanner.scanUntil(closingTagRe);type="&"}else{value=scanner.scanUntil(closingTagRe)}if(!scanner.scan(closingTagRe))throw new Error("Unclosed tag at "+scanner.pos);token=[type,value,start,scanner.pos];tokens.push(token);if(type==="#"||type==="^"){sections.push(token)}else if(type==="/"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section "'+value+'" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section "'+openSection[1]+'" at '+start)}else if(type==="name"||type==="{"||type==="&"){nonSpace=true}else if(type==="="){compileTags(value)}}openSection=sections.pop();if(openSection)throw new Error('Unclosed section "'+openSection[1]+'" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];if(token){if(token[0]==="text"&&lastToken&&lastToken[0]==="text"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{squashedTokens.push(token);lastToken=token}}}return squashedTokens}function nestTokens(tokens){var nestedTokens=[];var collector=nestedTokens;var sections=[];var token,section;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];switch(token[0]){case"#":case"^":collector.push(token);sections.push(token);collector=token[4]=[];break;case"/":section=sections.pop();section[5]=token[2];collector=sections.length>0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===""};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return"";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail="";break;case 0:match="";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={".":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,names,index,lookupHit=false;while(context){if(name.indexOf(".")>0){value=context.view;names=name.split(".");index=0;while(value!=null&&index<names.length){if(index===names.length-1)lookupHit=hasProperty(value,names[index]);value=value[names[index++]]}}else{value=context.view[name];lookupHit=hasProperty(context.view,name)}if(lookupHit)break;context=context.parent}cache[name]=value}if(isFunction(value))value=value.call(this.view);return value};function Writer(){this.cache={}}Writer.prototype.clearCache=function clearCache(){this.cache={}};Writer.prototype.parse=function parse(template,tags){var cache=this.cache;var tokens=cache[template];if(tokens==null)tokens=cache[template]=parseTemplate(template,tags);return tokens};Writer.prototype.render=function render(template,view,partials){var tokens=this.parse(template);var context=view instanceof Context?view:new Context(view);return this.renderTokens(tokens,context,partials,template)};Writer.prototype.renderTokens=function renderTokens(tokens,context,partials,originalTemplate){var buffer="";var token,symbol,value;for(var i=0,numTokens=tokens.length;i<numTokens;++i){value=undefined;token=tokens[i];symbol=token[0];if(symbol==="#")value=this.renderSection(token,context,partials,originalTemplate);else if(symbol==="^")value=this.renderInverted(token,context,partials,originalTemplate);else if(symbol===">")value=this.renderPartial(token,context,partials,originalTemplate);else if(symbol==="&")value=this.unescapedValue(token,context);else if(symbol==="name")value=this.escapedValue(token,context);else if(symbol==="text")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer="";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j<valueLength;++j){buffer+=this.renderTokens(token[4],context.push(value[j]),partials,originalTemplate)}}else if(typeof value==="object"||typeof value==="string"||typeof value==="number"){buffer+=this.renderTokens(token[4],context.push(value),partials,originalTemplate)}else if(isFunction(value)){if(typeof originalTemplate!=="string")throw new Error("Cannot use higher-order sections without the original template");value=value.call(context.view,originalTemplate.slice(token[3],token[5]),subRender);if(value!=null)buffer+=value}else{buffer+=this.renderTokens(token[4],context,partials,originalTemplate)}return buffer};Writer.prototype.renderInverted=function renderInverted(token,context,partials,originalTemplate){var value=context.lookup(token[1]);if(!value||isArray(value)&&value.length===0)return this.renderTokens(token[4],context,partials,originalTemplate)};Writer.prototype.renderPartial=function renderPartial(token,context,partials){if(!partials)return;var value=isFunction(partials)?partials(token[1]):partials[token[1]];if(value!=null)return this.renderTokens(this.parse(value),context,partials,value)};Writer.prototype.unescapedValue=function unescapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return value};Writer.prototype.escapedValue=function escapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return mustache.escape(value)};Writer.prototype.rawValue=function rawValue(token){return token[1]};mustache.name="mustache.js";mustache.version="2.1.2";mustache.tags=["{{","}}"];var defaultWriter=new Writer;mustache.clearCache=function clearCache(){return defaultWriter.clearCache()};mustache.parse=function parse(template,tags){return defaultWriter.parse(template,tags)};mustache.render=function render(template,view,partials){return defaultWriter.render(template,view,partials)};mustache.to_html=function to_html(template,view,partials,send){var result=mustache.render(template,view,partials);if(isFunction(send)){send(result)}else{return result}};mustache.escape=escapeHtml;mustache.Scanner=Scanner;mustache.Context=Context;mustache.Writer=Writer}); |
{ | ||
"name": "mustache", | ||
"version": "2.1.1", | ||
"version": "2.1.2", | ||
"description": "Logic-less {{mustache}} templates with JavaScript", | ||
"author": "mustache.js Authors <http://github.com/janl/mustache.js>", | ||
"homepage": "https://github.com/janl/mustache.js", | ||
"repository": { | ||
@@ -7,0 +8,0 @@ "type": "git", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
61916
0