| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 
							- var easyTemplate = function(s,d){
 
- 	if(!s){return '';}
 
- 	if(s!==easyTemplate.template){
 
- 		easyTemplate.template = s;
 
- 		easyTemplate.aStatement = easyTemplate.parsing(easyTemplate.separate(s));
 
- 	}
 
- 	var aST = easyTemplate.aStatement;
 
- 	var process = function(d2){
 
- 		if(d2){d = d2;}
 
- 		return arguments.callee;
 
- 	};
 
- 	process.toString = function(){
 
- 		return (new Function(aST[0],aST[1]))(d);
 
- 	};
 
- 	return process;
 
- };
 
- easyTemplate.separate = function(s){
 
- 	var r = /\\'/g;
 
- 	var sRet = s.replace(/(<(\/?)#(.*?(?:\(.*?\))*)>)|(')|([\r\n\t])|(\$\{([^\}]*?)\})/g,function(a,b,c,d,e,f,g,h){
 
- 		if(b){return '{|}'+(c?'-':'+')+d+'{|}';}
 
- 		if(e){return '\\\'';}
 
- 		if(f){return '';}
 
- 		if(g){return '\'+('+h.replace(r,'\'')+')+\'';}
 
- 	});
 
- 	return sRet;
 
- };
 
- easyTemplate.parsing = function(s){
 
- 	var mName,vName,sTmp,aTmp,sFL,sEl,aList,aStm = ['var aRet = [];'];
 
- 	aList = s.split(/\{\|\}/);
 
- 	var r = /\s/;
 
- 	while(aList.length){
 
- 		sTmp = aList.shift();
 
- 		if(!sTmp){continue;}
 
- 		sFL = sTmp.charAt(0);
 
- 		if(sFL!=='+'&&sFL!=='-'){
 
- 			sTmp = '\''+sTmp+'\'';aStm.push('aRet.push('+sTmp+');');
 
- 			continue;
 
- 		}
 
- 		aTmp = sTmp.split(r);
 
- 		switch(aTmp[0]){
 
- 			case '+macro':mName = aTmp[1];vName = aTmp[2];aStm.push('aRet.push("<!--'+mName+' start--\>");');break;
 
- 			case '-macro':aStm.push('aRet.push("<!--'+mName+' end--\>");');break;
 
- 			case '+if':aTmp.splice(0,1);aStm.push('if'+aTmp.join(' ')+'{');break;
 
- 			case '+elseif':aTmp.splice(0,1);aStm.push('}else if'+aTmp.join(' ')+'{');break;
 
- 			case '-if':aStm.push('}');break;
 
- 			case '+else':aStm.push('}else{');break;
 
- 			case '+list':aStm.push('if('+aTmp[1]+'&&'+aTmp[1]+'.constructor === Array){with({i:0,l:'+aTmp[1]+'.length,'+aTmp[3]+'_index:0,'+aTmp[3]+':null}){for(i=l;i--;){'+aTmp[3]+'_index=(l-i-1);'+aTmp[3]+'='+aTmp[1]+'['+aTmp[3]+'_index];');break;
 
- 			case '-list':aStm.push('}}}');break;
 
- 			default:break;
 
- 		}
 
- 	}
 
- 	aStm.push('return aRet.join("");');
 
- 	if(!vName){aStm.unshift('var data = arguments[0];');}
 
- 	return [vName,aStm.join('')];
 
- };
 
 
  |