summaryrefslogtreecommitdiffstats
path: root/lib/parse
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2016-04-28 11:15:51 +0200
committerSamy Pessé <samypesse@gmail.com>2016-04-28 11:15:51 +0200
commit4763f1342c1b63d2f43ae2f5060b93d4c09271fd (patch)
tree5ef83232fa187532efe01f59ce3d794476d56b60 /lib/parse
parent9413e53b001c3a7ee9d07a362a7bdd69df4d4c1e (diff)
downloadgitbook-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.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);
});
}