etms/asset/thirdlib/ETMS.WebUI/template.js

6 lines
7.7 KiB
JavaScript
Raw Permalink Normal View History

/*!
* artTemplate - Template Engine
* https://github.com/aui/artTemplate
* Released under the MIT, BSD, and GPL Licenses
*/
!(function(){var template=function(filename,content){return typeof content==="string"?compile(content,{filename:filename}):renderFile(filename,content)};template.version="3.0.0";template.config=function(name,value){defaults[name]=value};var defaults=template.defaults={openTag:"<%",closeTag:"%>",escape:true,cache:true,compress:false,parser:null};var cacheStore=template.cache={};template.render=function(source,options){return compile(source,options)};var renderFile=template.renderFile=function(filename,data){var fn=template.get(filename)||showDebugInfo({filename:filename,name:"Render Error",message:"Template not found"});return data?fn(data):fn};template.get=function(filename){var cache;if(cacheStore[filename]){cache=cacheStore[filename]}else{if(typeof document==="object"){var elem=document.getElementById(filename);if(elem){var source=(elem.value||elem.innerHTML).replace(/^\s*|\s*$/g,"");cache=compile(source,{filename:filename})}}}return cache};var toString=function(value,type){if(typeof value!=="string"){type=typeof value;if(type==="number"){value+=""}else{if(type==="function"){value=toString(value.call(value))}else{value=""}}}return value};var escapeMap={"<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","&":"&#38;"};var escapeFn=function(s){return escapeMap[s]};var escapeHTML=function(content){return toString(content).replace(/&(?![\w#]+;)|[<>"']/g,escapeFn)};var isArray=Array.isArray||function(obj){return({}).toString.call(obj)==="[object Array]"};var each=function(data,callback){var i,len;if(isArray(data)){for(i=0,len=data.length;i<len;i++){callback.call(data,data[i],i,data)}}else{for(i in data){callback.call(data,data[i],i)}}};var utils=template.utils={$helpers:{},$include:renderFile,$string:toString,$escape:escapeHTML,$each:each};template.helper=function(name,helper){helpers[name]=helper};var helpers=template.helpers=utils.$helpers;template.onerror=function(e){var message="Template Error\n\n";for(var name in e){message+="<"+name+">\n"+e[name]+"\n\n"}if(typeof console==="object"){console.error(message)}};var showDebugInfo=function(e){template.onerror(e);return function(){return"{Template Error}"}};var compile=template.compile=function(source,options){options=options||{};for(var name in defaults){if(options[name]===undefined){options[name]=defaults[name]}}var filename=options.filename;try{var Render=compiler(source,options)}catch(e){e.filename=filename||"anonymous";e.name="Syntax Error";return showDebugInfo(e)}function render(data){try{return new Render(data,filename)+""}catch(e){if(!options.debug){options.debug=true;return compile(source,options)(data)}return showDebugInfo(e)()}}render.prototype=Render.prototype;render.toString=function(){return Render.toString()};if(filename&&options.cache){cacheStore[filename]=render}return render};var forEach=utils.$each;var KEYWORDS="break,case,catch,continue, ,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";var REMOVE_RE=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g;var SPLIT_RE=/[^\w$]+/g;var KEYWORDS_RE=new RegExp(["\\b"+KEYWORDS.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g");var NUMBER_RE=/^\d[^,]*|,\d[^,]*/g;var BOUNDARY_RE=/^,+|,+$/g;function getVariable(code){return code.replace(REMOVE_RE,"").replace(SPLIT_RE,",").replace(KEYWORDS_RE,"").replace(NUMBER_RE,"").replace(BOUNDARY_RE,"").split(/^$|,+/)}function stringify(code){return"'"+code.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function compiler(source,options){var debug=options.debug;var openTag=options.openTag;var closeTag=options.closeTag;var parser=options.parser;var compress=options.compress;var escape=options.escape;var line=1;var uniq={$data:1,$filename:1,$utils:1,$helpers: