59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
/**
|
||
* Handlebars助手函数中心
|
||
*
|
||
* 导入并重导出所有助手函数,方便在generator中统一注册
|
||
*/
|
||
|
||
const formatters = require('./formatters');
|
||
const conditions = require('./conditions');
|
||
const utils = require('./utils');
|
||
|
||
/**
|
||
* 注册所有助手函数到Handlebars实例
|
||
* @param {Handlebars} handlebars Handlebars实例
|
||
*/
|
||
function registerAllHelpers(handlebars) {
|
||
// 注册格式化助手函数
|
||
Object.entries(formatters).forEach(([name, helper]) => {
|
||
handlebars.registerHelper(name, helper);
|
||
});
|
||
|
||
// 注册条件判断助手函数
|
||
Object.entries(conditions).forEach(([name, helper]) => {
|
||
handlebars.registerHelper(name, helper);
|
||
});
|
||
|
||
// 注册工具类助手函数
|
||
Object.entries(utils).forEach(([name, helper]) => {
|
||
handlebars.registerHelper(name, helper);
|
||
});
|
||
|
||
// 注册HTML转义函数(作为助手函数,方便在模板中调用)
|
||
handlebars.registerHelper('escapeHtml', function(text) {
|
||
if (text === undefined || text === null) {
|
||
return '';
|
||
}
|
||
return String(text)
|
||
.replace(/&/g, "&")
|
||
.replace(/</g, "<")
|
||
.replace(/>/g, ">")
|
||
.replace(/"/g, """)
|
||
.replace(/'/g, "'");
|
||
});
|
||
|
||
// 注册非转义助手函数(安全输出HTML)
|
||
handlebars.registerHelper('safeHtml', function(text) {
|
||
if (text === undefined || text === null) {
|
||
return '';
|
||
}
|
||
return new handlebars.SafeString(text);
|
||
});
|
||
}
|
||
|
||
// 导出所有助手函数和注册函数
|
||
module.exports = {
|
||
formatters,
|
||
conditions,
|
||
utils,
|
||
registerAllHelpers
|
||
};
|