summaryrefslogtreecommitdiffstats
path: root/lib/book.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/book.js')
-rw-r--r--lib/book.js36
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");
});
};