diff options
Diffstat (limited to 'lib/parse/parseSummary.js')
-rw-r--r-- | lib/parse/parseSummary.js | 26 |
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); }); } |