1
0
mirror of https://github.com/JuanCanham/HackMyResume.git synced 2025-05-03 21:07:07 +01:00

feat: support custom theme helpers

This commit is contained in:
hacksalot
2018-01-31 21:11:21 -05:00
parent 7f656175f0
commit 069506e86d
8 changed files with 88 additions and 12 deletions

View File

@ -6,7 +6,7 @@ Template helper definitions for Handlebars.
*/
(function() {
var HANDLEBARS, _, blockHelpers, helpers;
var HANDLEBARS, HMS, _, blockHelpers, helpers, path;
HANDLEBARS = require('handlebars');
@ -14,8 +14,12 @@ Template helper definitions for Handlebars.
helpers = require('./generic-helpers');
path = require('path');
blockHelpers = require('./block-helpers');
HMS = require('../core/status-codes');
/**
Register useful Handlebars helpers.
@ -23,7 +27,7 @@ Template helper definitions for Handlebars.
*/
module.exports = function(theme, opts) {
var i, len, ref, themeHelpers, wrappedHelpers;
var curGlob, ex, glob, wrappedHelpers;
helpers.theme = theme;
helpers.opts = opts;
helpers.type = 'handlebars';
@ -41,10 +45,33 @@ Template helper definitions for Handlebars.
}, this);
HANDLEBARS.registerHelper(wrappedHelpers);
HANDLEBARS.registerHelper(blockHelpers);
ref = theme.jsFiles;
for (i = 0, len = ref.length; i < len; i++) {
themeHelpers = ref[i];
HANDLEBARS.registerHelper(require(themeHelpers));
if (_.isString(theme.helpers)) {
theme.helpers = [theme.helpers];
}
if (_.isArray(theme.helpers)) {
glob = require('glob');
curGlob = null;
try {
_.each(theme.helpers, function(fGlob) {
curGlob = fGlob;
fGlob = path.join(theme.folder, fGlob);
glob(fGlob, {}, function(er, files) {
if (er === null && files.length > 0) {
_.each(files, function(f) {
HANDLEBARS.registerHelper(require(f));
});
}
});
});
} catch (_error) {
ex = _error;
throw {
fluenterror: HMS.themeHelperLoad,
inner: ex,
glob: curGlob,
exit: true
};
}
}
};