blob: 8644fa16f9a1e39b3039072d104211982d30bbe6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
var Immutable = require('immutable');
var timing = require('../utils/timing');
var Page = require('../models/page');
var walkSummary = require('./walkSummary');
var parsePage = require('./parsePage');
/**
Parse all pages from a book as an OrderedMap
@param {Book} book
@return {Promise<OrderedMap<Page>>}
*/
function parsePagesList(book) {
var fs = book.getContentFS();
var summary = book.getSummary();
var map = Immutable.OrderedMap();
return timing.measure(
'parse.listPages',
walkSummary(summary, function(article) {
if (!article.isPage()) return;
var filepath = article.getPath();
// 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);
})
.then(function(page) {
map = map.set(filepath, page);
}, function() {
// file doesn't exist
});
})
.then(function() {
return map;
})
);
}
module.exports = parsePagesList;
|