diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-04-26 17:02:59 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-04-26 17:02:59 +0200 |
commit | 8bac111acf121adf03cc2dff09bd0a1ce8cea19b (patch) | |
tree | e568a585c6ac78b05ff86044fb589edbd778b43d /lib/output/callHook.js | |
parent | 7a46d3b4977bcd1e115324880a409e88032899a7 (diff) | |
download | gitbook-8bac111acf121adf03cc2dff09bd0a1ce8cea19b.zip gitbook-8bac111acf121adf03cc2dff09bd0a1ce8cea19b.tar.gz gitbook-8bac111acf121adf03cc2dff09bd0a1ce8cea19b.tar.bz2 |
Add base for plugin JS api
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); }); } |