1 | var Handlebars = require('handlebars'),
|
2 | _ = require('lodash');
|
3 |
|
4 | var loadHelper = function(helperDefinition,options) {
|
5 | var cOpts = _.merge({
|
6 | handlebars: Handlebars,
|
7 | projectDir: process.cwd(),
|
8 | particleLoader: null
|
9 | },_.omit(options,_.isUndefined));
|
10 |
|
11 | var wrappedHelper = function () {
|
12 | var cModule, pPath, hArgs, hOpts;
|
13 |
|
14 | if (arguments.length === 1) {
|
15 | cModule = '';
|
16 | pPath = '';
|
17 | }
|
18 | else {
|
19 | var moduleCheck = _.isString(arguments[0]) ? arguments[0].split(':') : null;
|
20 |
|
21 | if (moduleCheck && moduleCheck[0] === 'module') {
|
22 | cModule = moduleCheck[1];
|
23 | pPath = arguments[1];
|
24 | }
|
25 | else {
|
26 | cModule = '';
|
27 | pPath = arguments[0];
|
28 | }
|
29 |
|
30 | hArgs = _.slice(arguments,(cModule ? 2 : 1),arguments.length-1);
|
31 | }
|
32 | hOpts = arguments[arguments.length-1];
|
33 |
|
34 | return helperDefinition.helper.apply(this,[cModule,pPath,hArgs,hOpts,cOpts]);
|
35 |
|
36 | };
|
37 |
|
38 | return wrappedHelper;
|
39 | };
|
40 |
|
41 | module.exports = loadHelper;
|