easyTemplate.js
来源:互联网 发布:华中师范网络教育登陆 编辑:程序博客网 时间:2024/06/11 01:05
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]+'.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('')];};
- easyTemplate.js
- “EasyTemplate” JS模板引擎
- js
- js
- JS
- JS
- JS
- js
- js
- js
- js
- js
- JS
- js
- JS
- js
- js
- js
- 关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
- 顶点着色器入门
- NYOJ 兔子的烦恼(二)
- 必须知道的
- 用DataTable.Compute()报错
- easyTemplate.js
- ora-01115错误
- AVL树 郁闷的出纳员 [NOI 2004] [平衡树解法]
- 用filter下载文件
- Android-一些常用的shell命令
- poj 1170 Shopping Offers 动态规划绝对经典题目
- SQL SERVER中,生成若干年份,包含列名公历日期、星期、月干支、日干支的表
- 将tomcat运行时的日志输出到指定文件
- Android重力感应应用【安卓进化十七】