Comparing version 0.2.2 to 0.2.3
86
doT.js
@@ -10,5 +10,22 @@ // doT.js | ||
var doT = { version : '0.2.0' }; | ||
var doT = { | ||
version: '0.2.0', | ||
templateSettings: { | ||
evaluate: /\{\{([\s\S]+?)\}\}/g, | ||
interpolate: /\{\{=([\s\S]+?)\}\}/g, | ||
encode: /\{\{!([\s\S]+?)\}\}/g, | ||
use: /\{\{#([\s\S]+?)\}\}/g, | ||
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g, | ||
conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g, | ||
iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g, | ||
varname: 'it', | ||
strip: true, | ||
append: true, | ||
selfcontained: false | ||
}, | ||
template: undefined, //fn, compile template | ||
compile: undefined //fn, for express | ||
}; | ||
var global = (function () { return this || (0 || eval)('this'); }()); | ||
var global = (function(){ return this || (0||eval)('this'); }()); | ||
@@ -18,3 +35,3 @@ if (typeof module !== 'undefined' && module.exports) { | ||
} else if (typeof define === 'function' && define.amd) { | ||
define(function() { return doT; }); | ||
define(function(){return doT;}); | ||
} else { | ||
@@ -24,19 +41,19 @@ global.doT = doT; | ||
doT.templateSettings = { | ||
evaluate: /\{\{([\s\S]+?)\}\}/g, | ||
interpolate: /\{\{=([\s\S]+?)\}\}/g, | ||
encode: /\{\{!([\s\S]+?)\}\}/g, | ||
use: /\{\{#([\s\S]+?)\}\}/g, | ||
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g, | ||
conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g, | ||
iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g, | ||
varname: 'it', | ||
strip : true, | ||
append: true, | ||
selfcontained: false | ||
}; | ||
function encodeHTMLSource() { | ||
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }, | ||
matchHTML = /&(?!\\w+;)|<|>|\"|'|\//g; | ||
return function(code) { | ||
return code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : code; | ||
}; | ||
} | ||
global.encodeHTML = encodeHTMLSource(); | ||
var startend = { | ||
append: { start: "'+(", end: ")+'", startencode: "'+encodeHTML(" }, | ||
split: { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML("} | ||
}, skip = /$^/; | ||
function resolveDefs(c, block, def) { | ||
return ((typeof block === 'string') ? block : block.toString()) | ||
.replace(c.define, function (m, code, assign, value) { | ||
.replace(c.define || skip, function(m, code, assign, value) { | ||
if (code.indexOf('def.') === 0) { | ||
@@ -54,3 +71,3 @@ code = code.substring(4); | ||
}) | ||
.replace(c.use, function(m, code) { | ||
.replace(c.use || skip, function(m, code) { | ||
var v = eval(code); | ||
@@ -62,19 +79,5 @@ return v ? resolveDefs(c, v, def) : v; | ||
function unescape(code) { | ||
return code.replace(/\\'/g, "'").replace(/\\\\/g,"\\").replace(/[\r\t\n]/g, ' '); | ||
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, ' '); | ||
} | ||
function encodeHTMLSource() { | ||
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' }, | ||
matchHTML = /&(?!\\w+;)|<|>|\"|'|\//g; | ||
return function(code) { | ||
return code ? code.toString().replace(matchHTML, function(m) { return encodeHTMLRules[m] || m; }) : code; | ||
}; | ||
} | ||
global.encodeHTML = encodeHTMLSource(); | ||
var startend = { // optimal choice depends on platform/size of templates | ||
append: { start: "'+(", end: ")+'", startencode: "'+encodeHTML(" }, | ||
split: { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML("} | ||
}; | ||
doT.template = function(tmpl, c, def) { | ||
@@ -91,12 +94,11 @@ c = c || doT.templateSettings; | ||
str = ("var out='" + ((c.strip) ? str.replace(/\s*<!\[CDATA\[\s*|\s*\]\]>\s*|[\r\n\t]|(\/\*[\s\S]*?\*\/)/g, ''): str) | ||
.replace(/\\/g, '\\\\') | ||
.replace(/'/g, "\\'") | ||
.replace(c.interpolate, function(m, code) { | ||
.replace(/'|\\/g, '\\$&') | ||
.replace(c.interpolate || skip, function(m, code) { | ||
return cse.start + unescape(code) + cse.end; | ||
}) | ||
.replace(c.encode, function(m, code) { | ||
.replace(c.encode || skip, function(m, code) { | ||
needhtmlencode = true; | ||
return cse.startencode + unescape(code) + cse.end; | ||
}) | ||
.replace(c.conditional, function(m, elsecase, code) { | ||
.replace(c.conditional || skip, function(m, elsecase, code) { | ||
return elsecase ? | ||
@@ -106,9 +108,9 @@ (code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") : | ||
}) | ||
.replace(c.iterate, function(m, iterate, vname, iname) { | ||
.replace(c.iterate || skip, function(m, iterate, vname, iname) { | ||
if (!iterate) return "'} };out+='"; | ||
sid+=1;indv = iname || "i"+sid;iterate=unescape(iterate); | ||
sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate); | ||
return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){" | ||
+vname+"=arr"+sid+"["+indv+"+=1];out+='"; | ||
}) | ||
.replace(c.evaluate, function(m, code) { | ||
.replace(c.evaluate || skip, function(m, code) { | ||
return "';" + unescape(code) + "out+='"; | ||
@@ -124,3 +126,3 @@ }) | ||
if (needhtmlencode && c.selfcontained) { | ||
str = "var encodeHTML=("+ encodeHTMLSource.toString()+"());"+str; | ||
str = "var encodeHTML=(" + encodeHTMLSource.toString() + "());" + str; | ||
} | ||
@@ -127,0 +129,0 @@ try { |
@@ -10,3 +10,3 @@ { | ||
], | ||
"version": "0.2.2", | ||
"version": "0.2.3", | ||
"main": "doT", | ||
@@ -13,0 +13,0 @@ "homepage": "http://github.com/olado/doT", |
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
7770
141