|
|
/** layui-v2.5.6 MIT License By https://www.layui.com */
|
|
|
;layui.define(function(e){"use strict";
|
|
|
// 配置模板语法的起始和结束符
|
|
|
var r={open:"{{",close:"}}"},
|
|
|
// 定义常用的正则表达式和方法
|
|
|
c={
|
|
|
exp:function(e){ // 用于生成全局的正则表达式
|
|
|
return new RegExp(e,"g")
|
|
|
},
|
|
|
query:function(e,c,t){ // 生成模板查询的正则表达式
|
|
|
var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];
|
|
|
return n((c||"")+r.open+o+r.close+(t||""))
|
|
|
},
|
|
|
escape:function(e){ // 转义HTML特殊字符
|
|
|
return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&")
|
|
|
.replace(/</g,"<").replace(/>/g,">")
|
|
|
.replace(/'/g,"'").replace(/"/g,""")
|
|
|
},
|
|
|
error:function(e,r){ // 输出错误信息
|
|
|
var c="Laytpl Error:";
|
|
|
return "object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e
|
|
|
}
|
|
|
},
|
|
|
n=c.exp, // 正则表达式处理函数
|
|
|
t=function(e){ this.tpl=e }; // 定义一个模板处理类
|
|
|
|
|
|
t.pt=t.prototype, window.errors=0;
|
|
|
|
|
|
// 模板解析方法
|
|
|
t.pt.parse=function(e,t){
|
|
|
var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");
|
|
|
|
|
|
// 清理模板中的多余空格和符号
|
|
|
e=e.replace(/\s+|\r|\t|\n/g," ")
|
|
|
.replace(n(r.open+"#"),r.open+"# ")
|
|
|
.replace(n(r.close+"}"),"} "+r.close)
|
|
|
.replace(/\\/g,"\\\\")
|
|
|
.replace(n(r.open+"!(.+?)!"+r.close),function(e){
|
|
|
return e=e.replace(n("^"+r.open+"!"),"")
|
|
|
.replace(n("!"+r.close),"")
|
|
|
.replace(n(r.open+"|"+r.close),function(e){
|
|
|
return e.replace(/(.)/g,"\\$1")
|
|
|
})
|
|
|
})
|
|
|
.replace(/(?="|')/g,"\\")
|
|
|
.replace(c.query(),function(e){
|
|
|
return e=e.replace(a,"").replace(l,""),
|
|
|
'";'+e.replace(/\\/g,"")+';view+="'
|
|
|
})
|
|
|
.replace(c.query(1),function(e){
|
|
|
var c='"+(';
|
|
|
return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')
|
|
|
});
|
|
|
|
|
|
// 构建最终的JavaScript代码
|
|
|
e='"use strict";var view = "'+e+'";return view;';
|
|
|
|
|
|
try{
|
|
|
// 执行生成的模板代码
|
|
|
return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)
|
|
|
}catch(u){
|
|
|
// 如果模板解析失败,输出错误信息
|
|
|
return delete o.cache,c.error(u,p)
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 渲染模板方法
|
|
|
t.pt.render=function(e,r){
|
|
|
var n,t=this;
|
|
|
return e ? (n=t.cache ? t.cache(e,c.escape) : t.parse(t.tpl,e), r ? void r(n) : n) : c.error("no data");
|
|
|
};
|
|
|
|
|
|
// 创建模板对象
|
|
|
var o=function(e){
|
|
|
return "string"!=typeof e ? c.error("Template not found") : new t(e)
|
|
|
};
|
|
|
|
|
|
// 配置模板引擎的选项
|
|
|
o.config=function(e){
|
|
|
e=e||{};
|
|
|
for(var c in e) r[c]=e[c]
|
|
|
};
|
|
|
|
|
|
// 设置模板版本
|
|
|
o.v="1.2.0", e("laytpl",o)
|
|
|
});
|