diff options
Diffstat (limited to 'lib/book.js')
-rw-r--r-- | lib/book.js | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/lib/book.js b/lib/book.js index 9795bc8..d1c7ece 100644 --- a/lib/book.js +++ b/lib/book.js @@ -16,10 +16,13 @@ var logger = require("./utils/logger"); var Configuration = require("./configuration"); var TemplateEngine = require("./template"); var Plugin = require("./plugin"); +var PluginsList = require("./pluginslist"); var generators = require("./generators"); var Book = function(root, context, parent) { + var that = this; + this.context = _.defaults(context || {}, { // Extend book configuration config: {}, @@ -70,7 +73,7 @@ var Book = function(root, context, parent) { this.files = []; // List of plugins - this.plugins = {}; + this.plugins = new PluginsList(this); // Structure files this.summaryFile = null; @@ -85,6 +88,9 @@ var Book = function(root, context, parent) { this.field('title', { boost: 10 }); this.field('body'); }); + + // Bind methods + _.bindAll(this); }; Book.LOG_LEVELS = { @@ -327,30 +333,12 @@ Book.prototype.parsePlugins = function() { var failed = []; // Load plugins - var pluginsList = _.map(that.options.plugins, function(plugin) { - var plugin = new Plugin(that, plugin.name); - that.log.info("load plugin", plugin.name, "...."); - - if (!plugin.isValid()) { - that.log.info.fail(); - failed.push(plugin.name); - } else { - that.log.info.ok(); - } - return plugin; - }); - - if (_.size(failed) > 0) return Q.reject(new Error("Error loading plugins: "+failed.join(",")+". Run 'gitbook install' to install plugins from NPM.")); - - that.log.info.ok(that.plugins.length+" plugins loaded"); - that.log.debug.ln("normalize plugins list"); - - return Plugin.normalize(pluginsList) - .then(function(_plugins) { - that.plugins = _plugins; + return that.plugins.load(that.options.plugins) + .then(function() { + if (_.size(that.plugins.failed) > 0) return Q.reject(new Error("Error loading plugins: "+that.plugins.failed.join(",")+". Run 'gitbook install' to install plugins from NPM.")); - // Add filters - that.template.addFilters(that.plugins.filters); + that.log.info.ok(that.plugins.length+" plugins loaded"); + that.log.debug.ln("normalize plugins list"); }); }; |