easytemplatejs
Version:
High-performance, small, pure, JavaScript template engine. Support:`CommonJS`, `AMD`, `CMD`, `Node.js`, `Express`, `koa`, `<etj-script>`, `<etj-style>`.
15 lines • 5.42 kB
JavaScript
/**
* EasyTemplate
*
* Version 3.0.0
*
* http://easyproject.cn
* https://github.com/ushelp
*
* Copyright 2012 Ray [ inthinkcolor@gmail.com ]
* Released under the MIT license
*
* [Support AMD, CMD, CommonJS, Node.js, Express]
*
*/
!function(){"use strict";var x,z,b="object"==typeof global&&global&&global.Object===Object&&global,c="object"==typeof self&&self&&self.Object===Object&&self,d=b||c||Function("return this")(),e="object"==typeof exports&&exports&&!exports.nodeType&&exports,f=e&&"object"==typeof module&&module&&!module.nodeType&&module,g=d.Et,h=new RegExp(/(.)^/),i=new RegExp(/\\|'|\r|\n|\t|\u2028|\u2029/g),j={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},k={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"},unescape:{"&":"&","<":"<",">":">",""":'"',"'":"'"}},l=function(a,b){return hasOwnProperty.call(a,b)},m=Object.keys||function(a){var b,c;if(a!==Object(a))throw new TypeError("Invalid object");b=[];for(c in a)l(a,c)&&b.push(c);return b},n={escape:new RegExp("["+m(k.escape).join("")+"]","g"),unescape:new RegExp("("+m(k.unescape).join("|")+")","g")},o=Array.prototype.slice,p=function(a){return z.each(o.call(arguments,1),function(b){if(b)for(var c in b)void 0===a[c]&&(a[c]=b[c])}),a},q=new RegExp(/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g),r=new RegExp(/[^\w$]+/g),s=new RegExp(["\\b"+"break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined".replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),t=new RegExp(/^\d[^,]*|,\d[^,]*/g),u=new RegExp(/^,+|,+$/g),v=new RegExp(/^$|,+/),w=function(a){var e,f,g,b=a.replace(q,"").replace(r,",").replace(s,"").replace(t,"").replace(u,"").split(v),c={},d=[];for(e=0;e<b.length;e++)c[b[e]]||"_p"==b[e]||"Et"==b[e]||"out"==b[e]||(c[b[e]]=!0,d.push(b[e]));for(f="var ";d.length;)g=d.shift(),f+=""+g+"= data."+g+",";return f},y=new RegExp(/(.)/g);g=d.Et,z={enableScript:!1,enableStyle:!1,tmplSettings:{scriptBegin:"%{",scriptEnd:"}%",outBegin:"{=",outEnd:"}",escapeOutBegin:"{-",escapeOutEnd:"}"},escape:function(a){return null==a?"":(""+a).replace(n["escape"],function(a){return k["escape"][a]})},unescape:function(a){return null==a?"":(""+a).replace(n["unescape"],function(a){return k["unescape"][a]})},each:function(a,b,c){var d,e,f;if(null!=a)if(Array.prototype.forEach&&a.forEach===Array.prototype.forEach)a.forEach(b,c);else if(a.length===+a.length){for(d=0,e=a.length;e>d;d++)if(b.call(c,a[d],d,a)===breaker)return}else for(f=f(a),d=0,e=f.length;e>d;d++)if(b.call(c,a[f[d]],f[d],a)===breaker)return},template:function(a,b,c){var d,e,f,g,k,m;a+="",c?(c=p({},c,z.tmplSettings),c={script:new RegExp(c.scriptBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+c.scriptEnd.replace(y,"\\$1"),"g"),out:new RegExp(c.outBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+c.outEnd.replace(y,"\\$1"),"g"),escapeOut:new RegExp(c.escapeOutBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+c.escapeOutEnd.replace(y,"\\$1"),"g")}):(("%{"!=z.tmplSettings.scriptBegin||"}%"!=z.tmplSettings.scriptEnd||"{="!=z.tmplSettings.outBegin||"}"!=z.tmplSettings.outEnd||"{-"!=z.tmplSettings.escapeOutBegin||"}"!=z.tmplSettings.escapeOutEnd)&&(x={script:new RegExp(z.tmplSettings.scriptBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+z.tmplSettings.scriptEnd.replace(y,"\\$1"),"g"),out:new RegExp(z.tmplSettings.outBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+z.tmplSettings.outEnd.replace(y,"\\$1"),"g"),escapeOut:new RegExp(z.tmplSettings.escapeOutBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+z.tmplSettings.escapeOutEnd.replace(y,"\\$1"),"g")}),c=x),a=z.unescape(a),e=new RegExp([(c.escapeOut||h).source,(c.out||h).source,(c.script||h).source].join("|")+"|$","g"),f=0,g="_p+='",a.replace(e,function(b,c,d,e,h){return g+=a.slice(f,h).replace(i,function(a){return"\\"+j[a]}),c&&(g+="'+\n((_t=("+c+"))==null?'':Et.escape(_t))+'"),d&&(g+="'+\n((_t=("+d+"))==null?'':_t)+'"),e&&(g+="';"+e+"\n_p+='"),f=h+b.length,b}),g+="';",k=w(g),this.enableScript&&(g=g.replace("<etj-script>","<script>").replace("</etj-script>","</script>")),this.enableStyle&&(g=g.replace("<etj-style>","<style>").replace("</etj-style>","</style>")),g="'use strict';"+k+"_t,_p='',out=function(){_p+=Array.prototype.join.call(arguments, '')};"+g+"return _p";try{d=new Function("data","Et",g)}catch(l){throw l.source="function anonymous(data,Et) {"+g+"}",l}if(b)try{return d(b,z)}catch(l){console.error(l)}return m=function(a){try{return d(a,z)}catch(b){console.error(b)}}},noConflict:function(){return d.Et===z&&(d.Et=g),z}},x={script:new RegExp(z.tmplSettings.scriptBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+z.tmplSettings.scriptEnd.replace(y,"\\$1"),"g"),out:new RegExp(z.tmplSettings.outBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+z.tmplSettings.outEnd.replace(y,"\\$1"),"g"),escapeOut:new RegExp(z.tmplSettings.escapeOutBegin.replace(y,"\\$1")+"([\\s\\S]+?)"+z.tmplSettings.escapeOutEnd.replace(y,"\\$1"),"g")},"function"==typeof define&&(define.amd||define.cmd)?define([],function(){return z}):f?((f.exports=z).Et=z,e.Et=z):d.Et=z}.call(this);