mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-17 16:15:22 +00:00
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
var Promise = require('../utils/promise');
|
|
|
|
var parseStructureFile = require('./parseStructureFile');
|
|
var Summary = require('../models/summary');
|
|
var SummaryModifier = require('../modifiers').Summary;
|
|
|
|
/**
|
|
Parse summary in a book, the summary can only be parsed
|
|
if the readme as be detected before.
|
|
|
|
@param {Book} book
|
|
@return {Promise<Book>}
|
|
*/
|
|
function parseSummary(book) {
|
|
var readme = book.getReadme();
|
|
var logger = book.getLogger();
|
|
var readmeFile = readme.getFile();
|
|
|
|
if (!readmeFile.exists()) {
|
|
return Promise.reject(new Error('Summary parsing should be done after readme parsing'));
|
|
}
|
|
|
|
return parseStructureFile(book, 'summary')
|
|
.spread(function(file, result) {
|
|
if (!file) {
|
|
logger.warn.ln('no summary file in this book');
|
|
return book;
|
|
}
|
|
logger.debug.ln('summary file found at', file.getPath());
|
|
|
|
var summary = Summary.createFromParts(file, result.parts);
|
|
|
|
// Insert readme as first entry
|
|
var firstArticle = summary.getFirstArticle();
|
|
if (!firstArticle || firstArticle.getRef() !== readmeFile.getPath()) {
|
|
summary = SummaryModifier.unshiftArticle(summary, {
|
|
title: 'Introduction',
|
|
ref: readmeFile.getPath()
|
|
});
|
|
}
|
|
|
|
// Set new summary
|
|
return book.setSummary(summary);
|
|
});
|
|
}
|
|
|
|
module.exports = parseSummary;
|