UNPKG

mya-golang-template

Version:

Plugin for golang html/template template

42 lines (36 loc) 1.73 kB
/** * 标签处理 * {{ 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; };