summaryrefslogtreecommitdiffstats
path: root/lib/generate/plugin.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-19 17:54:15 +0200
committerSamy Pessé <samypesse@gmail.com>2014-04-19 17:54:15 +0200
commitc6a624bc6b8e95d186a268c724031087cca8d681 (patch)
tree56e5cfcdbc27393428c6fe53b8b114743c8f76ba /lib/generate/plugin.js
parent8be8b825eebc95926e7d7c2596f8b789dba0f799 (diff)
downloadgitbook-c6a624bc6b8e95d186a268c724031087cca8d681.zip
gitbook-c6a624bc6b8e95d186a268c724031087cca8d681.tar.gz
gitbook-c6a624bc6b8e95d186a268c724031087cca8d681.tar.bz2
Add method to load a list of plugins from generator options
Diffstat (limited to 'lib/generate/plugin.js')
-rw-r--r--lib/generate/plugin.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/generate/plugin.js b/lib/generate/plugin.js
index a39fc65..27c1cc9 100644
--- a/lib/generate/plugin.js
+++ b/lib/generate/plugin.js
@@ -88,6 +88,36 @@ Plugin.fromList = function(names) {
});
};
+
+// Normalize a list of plugin name to use
+Plugin.normalizeNames = function(names) {
+ // Normalize list to an array
+ names = _.isString(names) ? names.split(":") : (names || []);
+
+ // List plugins to remove
+ var toremove = _.chain(names)
+ .filter(function(name) {
+ return name.length > 0 && name[0] == "-";
+ })
+ .map(function(name) {
+ return name.slice(1)
+ })
+ .value();
+
+ // Merge with defaults
+ names = _.chain(names)
+ .concat(Plugin.defaults)
+ .uniq()
+ .value();
+
+ // Remove plugins starting with
+ names = _.filter(names, function(name) {
+ return !_.contains(toremove, name) && !(name.length > 0 && name[0] == "-");
+ });
+
+ return names;
+};
+
// Default plugins
Plugin.defaults = [
"mixpanel"