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} */ 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;