summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-09-28 00:22:06 +0200
committerSamy Pessé <samypesse@gmail.com>2016-12-22 15:00:48 +0100
commitb205781abb1f71dc5627b21cfe93e8f4e049191f (patch)
treefec0591c342ff2a78c88ee9b9e7be863c20fe730
parent7caa5624e73552be147470fa9b379da55b00b376 (diff)
downloadgitbook-b205781abb1f71dc5627b21cfe93e8f4e049191f.zip
gitbook-b205781abb1f71dc5627b21cfe93e8f4e049191f.tar.gz
gitbook-b205781abb1f71dc5627b21cfe93e8f4e049191f.tar.bz2
Ignore empty entries in summary
-rw-r--r--packages/gitbook-markdown/lib/summary.js27
-rw-r--r--packages/gitbook-markdown/test/fixtures/SUMMARY_EMPTY.md5
-rw-r--r--packages/gitbook-markdown/test/summary.js5
3 files changed, 29 insertions, 8 deletions
diff --git a/packages/gitbook-markdown/lib/summary.js b/packages/gitbook-markdown/lib/summary.js
index 58fa910..2cb31be 100644
--- a/packages/gitbook-markdown/lib/summary.js
+++ b/packages/gitbook-markdown/lib/summary.js
@@ -101,10 +101,16 @@ function parseTitle(src) {
}
function parseChapter(nodes) {
- return _.extend(parseTitle(_.first(nodes).text), {
- articles: _.map(listSplit(filterList(nodes), 'list_item_start', 'list_item_end'), function(nodes, i) {
- return parseChapter(nodes);
- })
+ var node = _.first(nodes);
+ if (!node) return null;
+
+ return _.extend(parseTitle(node.text), {
+ articles: _.chain(listSplit(filterList(nodes), 'list_item_start', 'list_item_end'))
+ .map(function(nodes, i) {
+ return parseChapter(nodes);
+ })
+ .compact()
+ .value()
});
}
@@ -120,16 +126,21 @@ function listGroups(src) {
function parseSummary(src) {
// Split out chapter sections
- var chapters = listGroups(src)
- .map(parseChapter);
+ var chapters = _.chain(listGroups(src))
+ .map(parseChapter)
+ .compact()
+ .value();
return {
chapters: chapters
};
}
-function parseEntries (src) {
- return listGroups(src).map(parseChapter);
+function parseEntries(src) {
+ return _.chain(listGroups(src))
+ .map(parseChapter)
+ .compact()
+ .value();
}
diff --git a/packages/gitbook-markdown/test/fixtures/SUMMARY_EMPTY.md b/packages/gitbook-markdown/test/fixtures/SUMMARY_EMPTY.md
new file mode 100644
index 0000000..3ffacfd
--- /dev/null
+++ b/packages/gitbook-markdown/test/fixtures/SUMMARY_EMPTY.md
@@ -0,0 +1,5 @@
+# Summary
+
+* [Chapter 1](chapter-1/README.md)
+*  
+
diff --git a/packages/gitbook-markdown/test/summary.js b/packages/gitbook-markdown/test/summary.js
index 6854bc0..98cd57f 100644
--- a/packages/gitbook-markdown/test/summary.js
+++ b/packages/gitbook-markdown/test/summary.js
@@ -51,6 +51,11 @@ describe('Summary parsing', function () {
assert.equal(l.chapters.length, 5);
});
+ it('should allow ignore empty entries', function() {
+ var l = lex('SUMMARY_EMPTY.md');
+ assert.equal(l.chapters.length, 1);
+ });
+
it('should correctly convert it to text', function() {
var text = summary.toText(LEXED);
assertObjectsEqual(summary(text), LEXED);