diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-05-26 17:26:11 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-05-26 17:26:11 +0200 |
commit | ecd86ec8778fdf54c5a8e6edef618cde89336641 (patch) | |
tree | 1dda6345fadfc6d98fd08c6a0cf1bda5fb919b25 /lib | |
parent | 5d7864154c649fef8b434edfba494f757aa64be8 (diff) | |
download | gitbook-ecd86ec8778fdf54c5a8e6edef618cde89336641.zip gitbook-ecd86ec8778fdf54c5a8e6edef618cde89336641.tar.gz gitbook-ecd86ec8778fdf54c5a8e6edef618cde89336641.tar.bz2 |
Method for parsing glossary when not listed in summary
Diffstat (limited to 'lib')
-rw-r--r-- | lib/parse/parsePagesList.js | 51 |
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; + }); } |