summaryrefslogtreecommitdiffstats
path: root/lib/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins')
-rw-r--r--lib/plugins/__tests__/listAll.js53
-rw-r--r--lib/plugins/listAll.js43
-rw-r--r--lib/plugins/listForBook.js2
3 files changed, 23 insertions, 75 deletions
diff --git a/lib/plugins/__tests__/listAll.js b/lib/plugins/__tests__/listAll.js
index 71483a7..f9711a7 100644
--- a/lib/plugins/__tests__/listAll.js
+++ b/lib/plugins/__tests__/listAll.js
@@ -1,21 +1,10 @@
-jest.autoMockOff();
+var PluginDependency = require('../../models/pluginDependency');
+var listAll = require('../listAll');
describe('listAll', function() {
- var listAll = require('../listAll');
-
- it('must list from string', function() {
- var plugins = listAll('ga,great');
-
- expect(plugins.size).toBe(8);
-
- expect(plugins.has('ga')).toBe(true);
- expect(plugins.has('great')).toBe(true);
-
- expect(plugins.has('search')).toBe(true);
- });
-
- it('must list from array', function() {
- var plugins = listAll(['ga', 'great']);
+ it('must list default', function() {
+ var deps = PluginDependency.listFromString('ga,great');
+ var plugins = listAll(deps);
expect(plugins.size).toBe(8);
@@ -25,34 +14,9 @@ describe('listAll', function() {
expect(plugins.has('search')).toBe(true);
});
- it('must parse version (semver)', function() {
- var plugins = listAll(['ga@1.0.0', 'great@>=4.0.0']);
-
- expect(plugins.has('ga')).toBe(true);
- expect(plugins.has('great')).toBe(true);
-
- var ga = plugins.get('ga');
- expect(ga.getVersion()).toBe('1.0.0');
-
- var great = plugins.get('great');
- expect(great.getVersion()).toBe('>=4.0.0');
- });
-
- it('must parse version (git)', function() {
- var plugins = listAll(['ga@git+https://github.com/GitbookIO/plugin-ga.git', 'great@git+ssh://samy@github.com/GitbookIO/plugin-ga.git']);
-
- expect(plugins.has('ga')).toBe(true);
- expect(plugins.has('great')).toBe(true);
-
- var ga = plugins.get('ga');
- expect(ga.getVersion()).toBe('git+https://github.com/GitbookIO/plugin-ga.git');
-
- var great = plugins.get('great');
- expect(great.getVersion()).toBe('git+ssh://samy@github.com/GitbookIO/plugin-ga.git');
- });
-
it('must list from array with -', function() {
- var plugins = listAll(['ga', '-great']);
+ var deps = PluginDependency.listFromString('ga,-great');
+ var plugins = listAll(deps);
expect(plugins.size).toBe(7);
@@ -61,7 +25,8 @@ describe('listAll', function() {
});
it('must remove default plugins using -', function() {
- var plugins = listAll(['ga', '-search']);
+ var deps = PluginDependency.listFromString('ga,-search');
+ var plugins = listAll(deps);
expect(plugins.size).toBe(6);
diff --git a/lib/plugins/listAll.js b/lib/plugins/listAll.js
index d7ce5f3..9b2a96b 100644
--- a/lib/plugins/listAll.js
+++ b/lib/plugins/listAll.js
@@ -1,4 +1,3 @@
-var is = require('is');
var Immutable = require('immutable');
var Plugin = require('../models/plugin');
@@ -8,43 +7,27 @@ var DEFAULT_PLUGINS = require('../constants/defaultPlugins');
/**
List all plugins for a book
- @param {List<Plugin|String>}
+ @param {List<PluginDependency>} deps
@return {OrderedMap<Plugin>}
*/
-function listAll(plugins) {
- if (is.string(plugins)) {
- plugins = Immutable.List(plugins.split(','));
- }
-
- // Convert to an ordered map
- plugins = plugins.map(function(plugin) {
- if (is.string(plugin)) {
- plugin = Plugin.createFromString(plugin);
- } else {
- plugin = new Plugin(plugin);
- }
-
- return [plugin.getName(), plugin];
- });
- plugins = Immutable.OrderedMap(plugins);
-
+function listAll(deps) {
// Extract list of plugins to disable (starting with -)
- var toRemove = plugins.toList()
+ var toRemove = deps
.filter(function(plugin) {
- return plugin.getName()[0] === '-';
+ return !plugin.isEnabled();
})
.map(function(plugin) {
- return plugin.getName().slice(1);
+ return plugin.getName();
});
- // Remove the '-'
- plugins = plugins.mapKeys(function(name) {
- if (name[0] === '-') {
- return name.slice(1);
- } else {
- return name;
- }
- });
+ // Convert to an ordered map of Plugin
+ var plugins = deps
+ .map(function(dep) {
+ var plugin = Plugin.createFromDep(dep);
+
+ return [dep.getName(), plugin];
+ });
+ plugins = Immutable.OrderedMap(plugins);
// Append default plugins
DEFAULT_PLUGINS.forEach(function(pluginName) {
diff --git a/lib/plugins/listForBook.js b/lib/plugins/listForBook.js
index ce94678..5fb920f 100644
--- a/lib/plugins/listForBook.js
+++ b/lib/plugins/listForBook.js
@@ -10,7 +10,7 @@ var listAll = require('./listAll');
*/
function listForBook(book) {
var config = book.getConfig();
- var plugins = config.getValue('plugins');
+ var plugins = config.getPluginDependencies();
return listAll(plugins);
}