mya-golang-template
Version:
Plugin for golang html/template template
42 lines (36 loc) • 1.73 kB
JavaScript
/**
* 标签处理
* {{ template "component/button/index.html" }} -> {{ template "template/wap/component/button/index.html" }}
* {{ require "component/button/index.html" }} -> {{ require "template/wap/component/button/index.html" }}
*/
var lang = fis.compile.lang;
module.exports = function (content, file, conf) {
// TODO: conf 可以配置 delimiter
var left_delimiter = '{{', right_delimiter = '}}';
// {{ script }} {{ end }} {{ style }} {{ end }}
var reg = /(\{\{\/\*[\s\S]*?\*\/\}\})|(\{\{\s*script\s*\}\})([\s\S]*?)(?=\{\{\s*endscript\s*\}\})|(\{\{\s*style\s*\}\})([\s\S]*?)(?=\{\{\s*endstyle\s*\}\})/gi;
// {{ template }} {{ require }} {{ framework }}
var reg2 = /(\{\{\/\*[\s\S]*?(?:\*\/\}\}|$))|(?:\{\{\s*(template|require|framework)(.+?)\}\})/gi;
content = content.replace(reg, function (m, comment, script, jscode, style, csscode) {
// script: {{ script }} {{ endscript }}; style: {{ style }} {{ endstyle }}
// 结束标签为零宽断言,不会被替换
if (comment) {
m = fis.compile.analyseComment(comment);
} else if (script) {
m = fis.compile.xLang(script, jscode, file, 'js');
} else if (style) {
m = fis.compile.xLang(style, csscode, file, 'css');
}
return m;
});
content = content.replace(reg2, function (m, comments, directive, params) {
if (!comments && params) {
params = params.replace(/('|")(.+?)\1/ig, function (_, quote, value) {
return lang.id.ld + quote + value + quote + lang.id.rd;
});
m = left_delimiter + directive + params + right_delimiter;
}
return m;
});
return content;
};