diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-28 17:21:06 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-28 17:21:06 +0200 |
commit | 38fea06cf96360a08a0b704715436d6136797cb6 (patch) | |
tree | adcf9d10770e3eed48864ddbc73cf254611c8836 /lib/generate/plugin.js | |
parent | 4481b5f556937ad9980b1697421fbeb2433f45a0 (diff) | |
download | gitbook-38fea06cf96360a08a0b704715436d6136797cb6.zip gitbook-38fea06cf96360a08a0b704715436d6136797cb6.tar.gz gitbook-38fea06cf96360a08a0b704715436d6136797cb6.tar.bz2 |
Use hook to allow plugins to edit page content during generation (Fixes #176)
Diffstat (limited to 'lib/generate/plugin.js')
-rw-r--r-- | lib/generate/plugin.js | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/generate/plugin.js b/lib/generate/plugin.js index d92b918..6b30073 100644 --- a/lib/generate/plugin.js +++ b/lib/generate/plugin.js @@ -74,15 +74,15 @@ Plugin.prototype.resolveFile = function(filename) { }; // Resolve file path -Plugin.prototype.callHook = function(name, args) { +Plugin.prototype.callHook = function(name, context, data) { var hookFunc = this.infos.hooks? this.infos.hooks[name] : null; - args = _.isArray(args) ? args : [args]; + data = data || {}; - if (!hookFunc) return Q(); + if (!hookFunc) return Q(data); return Q() .then(function() { - return hookFunc.apply(null, args); + return hookFunc.apply(context, [data]); }); }; @@ -159,12 +159,12 @@ Plugin.fromList = function(names, root) { return Q({ 'list': plugins, 'resources': resources, - 'hook': function(name, args) { + 'hook': function(name, context, data) { return _.reduce(plugins, function(prev, plugin) { - return prev.then(function() { - return plugin.callHook(name, args); + return prev.then(function(ret) { + return plugin.callHook(name, context, ret); }) - }, Q()); + }, Q(data)); }, 'template': function(name) { var withTpl = _.find(plugins, function(plugin) { |