summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-05-26 17:26:11 +0200
committerSamy Pessé <samypesse@gmail.com>2016-05-26 17:26:11 +0200
commitecd86ec8778fdf54c5a8e6edef618cde89336641 (patch)
tree1dda6345fadfc6d98fd08c6a0cf1bda5fb919b25
parent5d7864154c649fef8b434edfba494f757aa64be8 (diff)
downloadgitbook-ecd86ec8778fdf54c5a8e6edef618cde89336641.zip
gitbook-ecd86ec8778fdf54c5a8e6edef618cde89336641.tar.gz
gitbook-ecd86ec8778fdf54c5a8e6edef618cde89336641.tar.bz2
Method for parsing glossary when not listed in summary
-rw-r--r--lib/parse/parsePagesList.js51
1 files changed, 41 insertions, 10 deletions
diff --git a/lib/parse/parsePagesList.js b/lib/parse/parsePagesList.js
index 8644fa1..1cf42f5 100644
--- a/lib/parse/parsePagesList.js
+++ b/lib/parse/parsePagesList.js
@@ -5,6 +5,25 @@ var Page = require('../models/page');
var walkSummary = require('./walkSummary');
var parsePage = require('./parsePage');
+
+/**
+ Parse a page from a path
+
+ @param {Book} book
+ @param {String} filePath
+ @return {Page}
+*/
+function parseFilePage(book, filePath) {
+ var fs = book.getContentFS();
+
+ return fs.statFile(filePath)
+ .then(function(file) {
+ var page = Page.createForFile(file);
+ return parsePage(book, page);
+ });
+}
+
+
/**
Parse all pages from a book as an OrderedMap
@@ -12,10 +31,11 @@ var parsePage = require('./parsePage');
@return {Promise<OrderedMap<Page>>}
*/
function parsePagesList(book) {
- var fs = book.getContentFS();
var summary = book.getSummary();
+ var glossary = book.getGlossary();
var map = Immutable.OrderedMap();
+ // Parse pages from summary
return timing.measure(
'parse.listPages',
walkSummary(summary, function(article) {
@@ -26,21 +46,32 @@ function parsePagesList(book) {
// Is the page ignored?
if (book.isContentFileIgnored(filepath)) return;
- return fs.statFile(filepath)
- .then(function(file) {
- var page = Page.createForFile(file);
- return parsePage(book, page);
- })
+ return parseFilePage(book, filepath)
.then(function(page) {
map = map.set(filepath, page);
}, function() {
// file doesn't exist
});
})
- .then(function() {
- return map;
- })
- );
+ )
+
+ // Parse glossary
+ .then(function() {
+ var file = glossary.getFile();
+
+ if (!file.exists()) {
+ return;
+ }
+
+ return parseFilePage(book, file.getPath())
+ .then(function(page) {
+ map = map.set(file.getPath(), page);
+ });
+ })
+
+ .then(function() {
+ return map;
+ });
}