summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-04-29 23:13:31 +0200
committerSamy Pesse <samypesse@gmail.com>2016-04-29 23:13:31 +0200
commitdb1a0aedf88ef467058408a1a607ada182174c33 (patch)
tree2fac8d40a4be614eda9e376f0b0b0292125a15e4
parent01a26fda2596fc7ffefec4a7e0a79d5fc97d44ba (diff)
downloadgitbook-db1a0aedf88ef467058408a1a607ada182174c33.zip
gitbook-db1a0aedf88ef467058408a1a607ada182174c33.tar.gz
gitbook-db1a0aedf88ef467058408a1a607ada182174c33.tar.bz2
Fix listing of plugins when contains "-"
-rw-r--r--lib/api/encodeGlobal.js7
-rw-r--r--lib/json/encodeBook.js2
-rw-r--r--lib/models/config.js8
-rw-r--r--lib/output/ebook/getConvertOptions.js2
-rw-r--r--lib/plugins/__tests__/listAll.js17
-rw-r--r--lib/plugins/listAll.js17
6 files changed, 37 insertions, 16 deletions
diff --git a/lib/api/encodeGlobal.js b/lib/api/encodeGlobal.js
index 073bc13..89cea59 100644
--- a/lib/api/encodeGlobal.js
+++ b/lib/api/encodeGlobal.js
@@ -1,5 +1,6 @@
var Promise = require('../utils/promise');
var PathUtils = require('../utils/path');
+var fs = require('../utils/fs');
var deprecate = require('./deprecate');
var encodeConfig = require('./encodeConfig');
@@ -15,7 +16,7 @@ var fileToURL = require('../output/helper/fileToURL');
*/
function encodeGlobal(output) {
var book = output.getBook();
- var fs = book.getContentFS();
+ var bookFS = book.getContentFS();
var logger = output.getLogger();
var outputFolder = output.getRoot();
@@ -42,7 +43,7 @@ function encodeGlobal(output) {
@return {Promise<Buffer>}
*/
readFile: function(fileName) {
- return fs.read(fileName);
+ return bookFS.read(fileName);
},
/**
@@ -52,7 +53,7 @@ function encodeGlobal(output) {
@return {Promise<String>}
*/
readFileAsString: function(fileName) {
- return fs.readAsString(fileName);
+ return bookFS.readAsString(fileName);
},
output: {
diff --git a/lib/json/encodeBook.js b/lib/json/encodeBook.js
index c134312..9bcb6ee 100644
--- a/lib/json/encodeBook.js
+++ b/lib/json/encodeBook.js
@@ -28,7 +28,7 @@ function encodeBookToJson(book) {
},
book: extend({
language: language? language : undefined
- }, variables)
+ }, variables.toJS())
};
}
diff --git a/lib/models/config.js b/lib/models/config.js
index f4735dd..547007a 100644
--- a/lib/models/config.js
+++ b/lib/models/config.js
@@ -31,13 +31,7 @@ Config.prototype.getValue = function(keyPath, def) {
return def;
}
- var value = values.getIn(keyPath);
-
- if (Immutable.Iterable.isIterable(value)) {
- value = value.toJS();
- }
-
- return value;
+ return values.getIn(keyPath);
};
/**
diff --git a/lib/output/ebook/getConvertOptions.js b/lib/output/ebook/getConvertOptions.js
index 75be364..bc80493 100644
--- a/lib/output/ebook/getConvertOptions.js
+++ b/lib/output/ebook/getConvertOptions.js
@@ -48,7 +48,7 @@ function getConvertOptions(output) {
getPDFTemplate(output, 'footer')
])
.spread(function(headerTpl, footerTpl) {
- var pdfOptions = config.getValue('pdf');
+ var pdfOptions = config.getValue('pdf').toJS();
return options = extend(options, {
'--chapter-mark': String(pdfOptions.chapterMark),
diff --git a/lib/plugins/__tests__/listAll.js b/lib/plugins/__tests__/listAll.js
index 6da5b8d..71483a7 100644
--- a/lib/plugins/__tests__/listAll.js
+++ b/lib/plugins/__tests__/listAll.js
@@ -51,4 +51,21 @@ describe('listAll', function() {
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']);
+
+ expect(plugins.size).toBe(7);
+
+ expect(plugins.has('ga')).toBe(true);
+ expect(plugins.has('great')).toBe(false);
+ });
+
+ it('must remove default plugins using -', function() {
+ var plugins = listAll(['ga', '-search']);
+
+ expect(plugins.size).toBe(6);
+
+ expect(plugins.has('ga')).toBe(true);
+ expect(plugins.has('search')).toBe(false);
+ });
});
diff --git a/lib/plugins/listAll.js b/lib/plugins/listAll.js
index 8a0fc07..65b8d7f 100644
--- a/lib/plugins/listAll.js
+++ b/lib/plugins/listAll.js
@@ -31,12 +31,21 @@ function listAll(plugins) {
// Extract list of plugins to disable (starting with -)
var toRemove = plugins.toList()
.filter(function(plugin) {
- return plugin.getName()[0] == '-';
+ return plugin.getName()[0] === '-';
})
.map(function(plugin) {
- return plugin.slice(1);
+ return plugin.getName().slice(1);
});
+ // Remove the '-'
+ plugins = plugins.mapKeys(function(name) {
+ if (name[0] === '-') {
+ return name.slice(1);
+ } else {
+ return name;
+ }
+ });
+
// Append default plugins
DEFAULT_PLUGINS.forEach(function(pluginName) {
if (plugins.has(pluginName)) return;
@@ -48,8 +57,8 @@ function listAll(plugins) {
});
// Remove plugins
- plugins = plugins.filterNot(function(plugin) {
- return toRemove.includes(plugin.getName());
+ plugins = plugins.filterNot(function(plugin, name) {
+ return toRemove.includes(name);
});
return plugins;