summaryrefslogtreecommitdiffstats
path: root/lib/parse/parseSummary.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/parse/parseSummary.js')
-rw-r--r--lib/parse/parseSummary.js26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/parse/parseSummary.js b/lib/parse/parseSummary.js
index fc34446..6ac8d04 100644
--- a/lib/parse/parseSummary.js
+++ b/lib/parse/parseSummary.js
@@ -1,14 +1,24 @@
+var Promise = require('../utils/promise');
+
var parseStructureFile = require('./parseStructureFile');
var Summary = require('../models/summary');
+var SummaryModifier = require('../modifiers').Summary;
/**
- Parse summary in a book
+ 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) {
@@ -19,6 +29,20 @@ function parseSummary(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.set('summary', summary);
});
}