jtl
Version:
JTL templating language and engine
14 lines (13 loc) • 2.7 kB
JavaScript
/*!
------------------------------------------------------------------------------
jiro v1.0.0
Written by Darius Aseriskis
Licensed under MIT
------------------------------------------------------------------------------
*/
function f(g){return function(){return g}}
(function(){var g=/\{\{?([`/?~!@#$%^&*+=])?([`/?~!@#$%^&*+=])?\s*([\s\S]*?)\s*([`/?~!@#$%^&*+=])?\}\}/g,h={},d={g:"it",b:"def",extend:function(c){for(var a in c)h[a]=c[a]},h:function(c,a){h[c].debug=a},trim:function(c){return c.replace(/^\s+|\s+$/g,"")},a:function(c){return"undefined"===typeof c},f:function(c){var a=this,b=c,l=[],k;for(k in h)a.a(h[k].c)||l.push(h[k].c());b="var out='"+b.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ").replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,"").replace(/'|\\/g,"\\$&").replace(g,
function(b,d,e,j,g){d=["{{",a.a(d)?"":d,a.a(e)?"":e,a.a(j)||!a.a(j)&&0==a.trim(j).length?"":"{code}",a.a(g)?"":g,"}}"].join("");e=h[d];if(!a.a(e)&&!a.a(e.exec))return b=!0,a.a(e.debug)||(b=e.debug(d,j,c)),null==b||!0==b?e.exec(d,j):b;a.debug&&a.debug.error("No such pattern: "+d,{code:j,match:b,f:c});return""})+"';return out;";b="var "+d.b+" = {"+l.join(",")+"};"+b;!a.a(a.debug)&&!a.a(a.debug.e)&&(b=a.debug.e(b));try{return a.a(a.debug)||!a.a(a.debug)&&a.debug.finish(b,c)?new Function(d.g,b):f("Debugger found an issue. Check for console for errors.")}catch(m){throw a.debug&&
a.debug.error("Could not create a template function: \n"+b),m;}}};"undefined"!==typeof module&&module.d?module.d=d:function(){return this||(0,eval)("this")}().i=d;d.extend({"{{{code}}}":{exec:function(c,a){return"';"+unescape(a)+"out+='"}},"{{={code}}}":{exec:function(c,a){return"'+("+unescape(a)+")+'"}},"{{?{code}}}":{exec:function(c,a){return"';if("+unescape(a)+"){out+='"}},"{{?}}":{exec:f("';}out+='")},"{{??}}":{exec:f("';}else{out+='")},"{{??{code}}}":{exec:function(c,a){return"';}else if("+unescape(a)+
"){out+='"}},"{{~{code}}}":{exec:function(c,a){var b=a.split(":");return"';"+d.b+".iterate("+unescape(b[0])+", function("+b[1]+"){ out+='"},c:function(){return"iterate : "+function(c,a){if(c instanceof Array)for(var b=0;b<c.length;b++)a(b,c[b]);else for(b in c)a(b,c[b])}.toString()}},"{{~}}":{exec:f("';});out+='")},"{{`{code}}}":{exec:f("")},"{{#{code}}}":{exec:function(c,a){var b=a.split(":");return"';var "+d.trim(unescape(b[0]))+"= function("+(1<b.length?b[1]:"")+"){out+='"}},"{{#}}":{exec:f("';};out+='")},
"{{!{code}}}":{exec:function(c,a){return"'+("+d.b+".encode("+unescape(a)+"))+'"},c:function(){return"encode : "+function(c){var a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return c.replace(/&(?!#?\w+;)|<|>|"|'|\//g,function(b){return a[b]||b})}.toString()}}})})();