diff options
Diffstat (limited to 'lib/output/callHook.js')
-rw-r--r-- | lib/output/callHook.js | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/output/callHook.js b/lib/output/callHook.js index 8d34bdc..1ff1a41 100644 --- a/lib/output/callHook.js +++ b/lib/output/callHook.js @@ -1,4 +1,5 @@ var Promise = require('../utils/promise'); +var Api = require('../api'); function defaultGetArgument() { return undefined; @@ -26,7 +27,13 @@ function callHook(name, getArgument, handleResult, output) { logger.debug.ln('calling hook "' + name + '"'); + // Create the JS context for plugins + var context = Api.encodeGlobal(output); + + // Get the arguments return Promise(getArgument(output)) + + // Call the hooks in serie .then(function(arg) { return Promise.reduce(plugins, function(prev, plugin) { var hook = plugin.getHook(name); @@ -34,10 +41,13 @@ function callHook(name, getArgument, handleResult, output) { return prev; } - return hook(prev); + return hook.call(context, prev); }, arg); }) + + // Handle final result .then(function(result) { + output = Api.decodeGlobal(output, context); return handleResult(output, result); }); } |