Skip to content

Instantly share code, notes, and snippets.

@paranoidjk
Created December 28, 2016 09:04
Show Gist options
  • Save paranoidjk/d21c0f23115dfb729e3bfc024a7ee7d5 to your computer and use it in GitHub Desktop.
Save paranoidjk/d21c0f23115dfb729e3bfc024a7ee7d5 to your computer and use it in GitHub Desktop.
var cache = {};
function tmpl(str, data) {
var fn = ! /\W/.test(str) ? cache[str] = cache[str] || tmpl(document.getElementById(str).innerHTML) :
new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};" +
"with(obj){p.push('" +
str.replace(/[\r\t\n]/g, " ")
.split("<%").join("\t")
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
.replace(/\t=(.*?)%>/g, "',$1,'")
.split("\t").join("');")
.split("%>")
.join("p.push('")
.split("\r").join("\\'") + "');}return p.join('');");
return data ? fn(data) : fn;
};
var a = tmpl("<div><% for(var i=0;i<10;i++){ %> <span><%= i%></span> <% } %></div>")
console.log(a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment