diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-04-28 11:15:51 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-04-28 11:15:51 +0200 |
commit | 4763f1342c1b63d2f43ae2f5060b93d4c09271fd (patch) | |
tree | 5ef83232fa187532efe01f59ce3d794476d56b60 /lib/parse | |
parent | 9413e53b001c3a7ee9d07a362a7bdd69df4d4c1e (diff) | |
download | gitbook-4763f1342c1b63d2f43ae2f5060b93d4c09271fd.zip gitbook-4763f1342c1b63d2f43ae2f5060b93d4c09271fd.tar.gz gitbook-4763f1342c1b63d2f43ae2f5060b93d4c09271fd.tar.bz2 |
Add base modifiers for summary as SummaryModifier
Diffstat (limited to 'lib/parse')
-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); }); } |