summaryrefslogtreecommitdiffstats
path: root/lib/modifiers
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-06-07 00:56:24 +0200
committerSamy Pesse <samypesse@gmail.com>2016-06-07 00:56:24 +0200
commitbf895b707e6cc4ca5fdf4ade5bb9235f1b1b99ca (patch)
treee5a8d3b5d5dc4d4ea91415a1c11b7041f72de7d2 /lib/modifiers
parent996170a4ade4f72df2efb6ee2e75edaab669809f (diff)
downloadgitbook-bf895b707e6cc4ca5fdf4ade5bb9235f1b1b99ca.zip
gitbook-bf895b707e6cc4ca5fdf4ade5bb9235f1b1b99ca.tar.gz
gitbook-bf895b707e6cc4ca5fdf4ade5bb9235f1b1b99ca.tar.bz2
Improve addPlugin to not append default plugins to the list
Diffstat (limited to 'lib/modifiers')
-rw-r--r--lib/modifiers/config/addPlugin.js14
-rw-r--r--lib/modifiers/config/isDefaultPlugin.js15
-rw-r--r--lib/modifiers/config/removePlugin.js8
3 files changed, 27 insertions, 10 deletions
diff --git a/lib/modifiers/config/addPlugin.js b/lib/modifiers/config/addPlugin.js
index b495062..b8d4ea1 100644
--- a/lib/modifiers/config/addPlugin.js
+++ b/lib/modifiers/config/addPlugin.js
@@ -1,16 +1,22 @@
var PluginDependency = require('../../models/pluginDependency');
+var togglePlugin = require('./togglePlugin');
+var isDefaultPlugin = require('./isDefaultPlugin');
/**
* Add a plugin to a book's configuration
* @param {Config} config
- * @param {String} plugin
+ * @param {String} pluginName
* @param {String} version (optional)
* @return {Config}
*/
-function addPlugin(config, plugin, version) {
- var deps = config.getPluginDependencies();
+function addPlugin(config, pluginName, version) {
+ // For default plugin, we only ensure it is enabled
+ if (isDefaultPlugin(pluginName, version)) {
+ return togglePlugin(config, pluginName, true);
+ }
- var dep = PluginDependency.create(plugin, version);
+ var deps = config.getPluginDependencies();
+ var dep = PluginDependency.create(pluginName, version);
deps = deps.push(dep);
return config.setPluginDependencies(deps);
diff --git a/lib/modifiers/config/isDefaultPlugin.js b/lib/modifiers/config/isDefaultPlugin.js
new file mode 100644
index 0000000..e68874a
--- /dev/null
+++ b/lib/modifiers/config/isDefaultPlugin.js
@@ -0,0 +1,15 @@
+var DEFAULT_PLUGINS = require('../../constants/defaultPlugins');
+
+/**
+ * Test if a plugin is a default one
+ * @param {String} plugin
+ * @param {String} version
+ * @return {Boolean}
+ */
+function isDefaultPlugin(pluginName, version) {
+ return !!DEFAULT_PLUGINS.find(function(dep) {
+ return dep.getName() === pluginName && (!version || dep.getVersion() === version);
+ });
+}
+
+module.exports = isDefaultPlugin;
diff --git a/lib/modifiers/config/removePlugin.js b/lib/modifiers/config/removePlugin.js
index 123be0b..dd7c248 100644
--- a/lib/modifiers/config/removePlugin.js
+++ b/lib/modifiers/config/removePlugin.js
@@ -1,5 +1,5 @@
-var DEFAULT_PLUGINS = require('../../constants/defaultPlugins');
var togglePlugin = require('./togglePlugin');
+var isDefaultPlugin = require('./isDefaultPlugin');
/**
* Remove a plugin from a book's configuration
@@ -10,12 +10,8 @@ var togglePlugin = require('./togglePlugin');
function removePlugin(config, pluginName) {
var deps = config.getPluginDependencies();
- var isDefault = DEFAULT_PLUGINS.find(function(dep) {
- return dep.getName() === pluginName;
- });
-
// For default plugin, we have to disable it instead of removing from the list
- if (isDefault) {
+ if (isDefaultPlugin(pluginName)) {
return togglePlugin(config, pluginName, false);
}