diff options
Diffstat (limited to 'lib/parse/parseSummary.js')
-rw-r--r-- | lib/parse/parseSummary.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/parse/parseSummary.js b/lib/parse/parseSummary.js new file mode 100644 index 0000000..72bf224 --- /dev/null +++ b/lib/parse/parseSummary.js @@ -0,0 +1,46 @@ +var parseStructureFile = require('./parseStructureFile'); +var Summary = require('../models/summary'); +var SummaryModifier = require('../modifiers').Summary; +var location = require('../utils/location'); + +/** + 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(); + + return parseStructureFile(book, 'summary') + .spread(function(file, result) { + var summary; + + if (!file) { + logger.warn.ln('no summary file in this book'); + summary = Summary(); + } else { + logger.debug.ln('summary file found at', file.getPath()); + summary = Summary.createFromParts(file, result.parts); + } + + // Insert readme as first entry + var firstArticle = summary.getFirstArticle(); + + if (readmeFile.exists() && + (!firstArticle || !location.areIdenticalPaths(firstArticle.getRef(), readmeFile.getPath()))) { + summary = SummaryModifier.unshiftArticle(summary, { + title: 'Introduction', + ref: readmeFile.getPath() + }); + } + + // Set new summary + return book.setSummary(summary); + }); +} + +module.exports = parseSummary; |