diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-01-31 17:01:50 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-01-31 17:01:50 +0100 |
commit | a24aa79dbf5be625ec3fdac50aca955c0b478fec (patch) | |
tree | c2f9c15ae7c703d8bb1e100198108369bafb7174 /lib/plugins | |
parent | 633de85180b1c968edc3e884821c3de668d23506 (diff) | |
download | gitbook-a24aa79dbf5be625ec3fdac50aca955c0b478fec.zip gitbook-a24aa79dbf5be625ec3fdac50aca955c0b478fec.tar.gz gitbook-a24aa79dbf5be625ec3fdac50aca955c0b478fec.tar.bz2 |
Add base for templating
Diffstat (limited to 'lib/plugins')
-rw-r--r-- | lib/plugins/index.js | 61 | ||||
-rw-r--r-- | lib/plugins/manager.js | 61 |
2 files changed, 61 insertions, 61 deletions
diff --git a/lib/plugins/index.js b/lib/plugins/index.js index e69de29..33a2047 100644 --- a/lib/plugins/index.js +++ b/lib/plugins/index.js @@ -0,0 +1,61 @@ +var _ = require('lodash'); + +var Promise = require('../utils/promise'); +var BookPlugin = require('./plugin'); + + +/* +PluginsManager is an interface to work with multiple plugins at once: +- Extract assets from plugins +- Call hooks for all plugins, etc +*/ + +function PluginsManager(book) { + this.book = book; + this.plugins = []; +} + +// Returns a plugin by its name +PluginsManager.prototype.get = function(name) { + return _.find(this.plugins, { + id: name + }); +}; + +// Load a plugin, or a list of plugins +PluginsManager.prototype.load = function(name) { + var that = this; + + if (_.isArray(name)) { + return Promise.serie(name, function(_name) { + return that.load(_name); + }); + } + + return Promise() + + // Initiate and load the plugin + .then(function() { + var plugin; + + if (!_.isString(name)) plugin = name; + else plugin = new BookPlugin(that.book, name); + + if (that.get(plugin.id)) { + throw new Error('Plugin "'+plugin.id+'" is already loaded'); + } + + + if (plugin.isLoaded()) return plugin; + else return plugin.load() + .thenResolve(plugin); + }) + + .then(function(plugin) { + that.plugins.push(plugin); + }); +}; + + + +module.exports = PluginsManager; diff --git a/lib/plugins/manager.js b/lib/plugins/manager.js deleted file mode 100644 index b6549d6..0000000 --- a/lib/plugins/manager.js +++ /dev/null @@ -1,61 +0,0 @@ -var _ = require('lodash'); - -var Promise = require('../utils/promise'); -var BookPlugin = require('./plugin'); - - -/* -PluginsManager is an interface to work with multiple plugins at once: -- Extract assets from plugins -- Call hooks for all plugins, etc -*/ - -function PluginsManager(book) { - this.book = book; - this.plugins = []; -} - -// Returns a plugin by its name -PluginsManager.prototype.get = function(name) { - return _.find(this.plugins, { - id: name - }); -}; - -// Load a plugin, or a list of plugins -PluginsManager.prototype.load = function(name) { - var that = this; - - if (!_.isArray(name)) { - return Promise.serie(name, function(_name) { - return that.load(_name); - }); - } - - return Promise() - - // Initiate and load the plugin - .then(function() { - var plugin; - - if (!_.isString(name)) plugin = name; - else plugin = new BookPlugin(that.book, name); - - if (that.get(plugin.id)) { - throw new Error('Plugin "'+plugin.id+'" is already loaded'); - } - - - if (plugin.isLoaded()) return plugin; - else return plugin.load() - .thenResolve(plugin); - }) - - .then(function(plugin) { - that.plugins.push(plugin); - }); -}; - - - -module.exports = PluginsManager; |