mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2025-05-02 20:37:08 +01:00
feat: support custom theme helpers
This commit is contained in:
6
dist/cli/error.js
vendored
6
dist/cli/error.js
vendored
@ -61,7 +61,7 @@ Error-handling routines for HackMyResume.
|
||||
stack = ex.stack || (ex.inner && ex.inner.stack);
|
||||
stack && o(chalk.gray(stack));
|
||||
}
|
||||
if (shouldExit) {
|
||||
if (shouldExit || ex.exit) {
|
||||
if (this.debug) {
|
||||
o(chalk.cyan('Exiting with error code ' + ex.fluenterror.toString()));
|
||||
}
|
||||
@ -262,6 +262,10 @@ Error-handling routines for HackMyResume.
|
||||
case HMSTATUS.unknownSchema:
|
||||
msg = M2C(this.msgs.unknownSchema.msg[0]);
|
||||
etype = 'error';
|
||||
break;
|
||||
case HMSTATUS.themeHelperLoad:
|
||||
msg = printf(M2C(this.msgs.themeHelperLoad.msg), ex.glob);
|
||||
etype = 'error';
|
||||
}
|
||||
return {
|
||||
msg: msg,
|
||||
|
5
dist/cli/msg.yml
vendored
5
dist/cli/msg.yml
vendored
@ -132,3 +132,8 @@ errors:
|
||||
"basics": {
|
||||
"name": "John Doe"
|
||||
}
|
||||
themeHelperLoad:
|
||||
msg: >-
|
||||
An error occurred while attempting to load the '%s' theme helper. Is the
|
||||
theme correctly installed?
|
||||
dummy: dontcare
|
||||
|
3
dist/core/status-codes.js
vendored
3
dist/core/status-codes.js
vendored
@ -36,7 +36,8 @@ Status codes for HackMyResume.
|
||||
validateError: 26,
|
||||
invalidOptionsFile: 27,
|
||||
optionsFileNotFound: 28,
|
||||
unknownSchema: 29
|
||||
unknownSchema: 29,
|
||||
themeHelperLoad: 30
|
||||
};
|
||||
|
||||
}).call(this);
|
||||
|
39
dist/helpers/handlebars-helpers.js
vendored
39
dist/helpers/handlebars-helpers.js
vendored
@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user