diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-19 17:54:15 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-19 17:54:15 +0200 |
commit | c6a624bc6b8e95d186a268c724031087cca8d681 (patch) | |
tree | 56e5cfcdbc27393428c6fe53b8b114743c8f76ba /lib/generate/plugin.js | |
parent | 8be8b825eebc95926e7d7c2596f8b789dba0f799 (diff) | |
download | gitbook-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.js | 30 |
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" |