summaryrefslogtreecommitdiffstats
path: root/lib/generate
diff options
context:
space:
mode:
Diffstat (limited to 'lib/generate')
-rw-r--r--lib/generate/generator.js5
-rw-r--r--lib/generate/plugin.js30
2 files changed, 35 insertions, 0 deletions
diff --git a/lib/generate/generator.js b/lib/generate/generator.js
index 13022a5..d9ec286 100644
--- a/lib/generate/generator.js
+++ b/lib/generate/generator.js
@@ -1,9 +1,14 @@
+var _ = require("lodash");
var path = require("path");
var Q = require("q");
var fs = require("./fs");
+var Plugin = require("./plugin");
+
var BaseGenerator = function(options) {
this.options = options;
+
+ this.options.plugins = Plugin.normalizeNames(this.options.plugins);
};
BaseGenerator.prototype.convertFile = function(content, input) {
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"