const glob = require('glob'); const path = require('path'); const handlebars = require('./handlebars'); // Internal Cache const registry = {}; const registerHelper = (name, helperFn) => { if (registry[name]) { return; } registry[name] = helperFn; if (helperFn.async) { handlebars.registerAsyncThemeHelper(name, helperFn); } else { handlebars.registerThemeHelper(name, helperFn); } }; const registerDir = (helperPath) => { let helperFiles = glob.sync('!(index).js', {cwd: helperPath}); helperFiles.forEach((helper) => { const name = helper.replace(/.js$/, ''); const fn = require(path.join(helperPath, helper)); registerHelper(name, fn); if (fn.alias) { registerHelper(fn.alias, fn); } }); }; const registerAlias = (alias, name) => { registerHelper(alias, registry[name]); }; module.exports = { registerAlias, registerHelper, registerDir };