summaryrefslogtreecommitdiffstats
path: root/lib/parse
diff options
context:
space:
mode:
authorShaform <shaform@gmail.com>2014-06-17 22:08:46 +0800
committerShaform <shaform@gmail.com>2014-06-17 22:08:46 +0800
commit6bbefad24e6aa4a5b51b4b21bdf30b73f8cb4d41 (patch)
treed2efbbb62f9746b19b683c11a302c9afe385a2be /lib/parse
parent1f4cf33dd08b439cadb5c649654ecd6d3f4b399d (diff)
parentd6eb8e4c6042262408c3c0b8d67bccecfa4bf882 (diff)
downloadgitbook-6bbefad24e6aa4a5b51b4b21bdf30b73f8cb4d41.zip
gitbook-6bbefad24e6aa4a5b51b4b21bdf30b73f8cb4d41.tar.gz
gitbook-6bbefad24e6aa4a5b51b4b21bdf30b73f8cb4d41.tar.bz2
Merge remote-tracking branch 'upstream/master' into ref_links
Diffstat (limited to 'lib/parse')
-rw-r--r--lib/parse/git.js2
-rw-r--r--lib/parse/navigation.js10
-rw-r--r--lib/parse/summary.js27
3 files changed, 25 insertions, 14 deletions
diff --git a/lib/parse/git.js b/lib/parse/git.js
index 4478f20..18a7cd3 100644
--- a/lib/parse/git.js
+++ b/lib/parse/git.js
@@ -28,7 +28,7 @@ function gitURL(path) {
// Parse a git URL to a github ID : username/reponame
function githubID(_url) {
// Remove .git if it's in _url
- var sliceEnd = _url.slice(-4) === '.git' ? -4 : _url.length;
+ var sliceEnd = _url.slice(-4) === '.git' ? -4 : undefined;
// Detect HTTPS repos
var parsed = url.parse(_url);
diff --git a/lib/parse/navigation.js b/lib/parse/navigation.js
index 2c783e4..ae4eb9d 100644
--- a/lib/parse/navigation.js
+++ b/lib/parse/navigation.js
@@ -26,15 +26,9 @@ function navigation(summary, files) {
// Support single files as well as list
files = _.isArray(files) ? files : (_.isString(files) ? [files] : null);
- // Special README nav
- var README_NAV = {
- path: 'README.md',
- title: 'Introduction',
- level: '0',
- };
-
// List of all navNodes
- var navNodes = [README_NAV].concat(flattenChapters(summary.chapters));
+ // Flatten chapters, then add in default README node if ndeeded etc ...
+ var navNodes = flattenChapters(summary.chapters);
var prevNodes = [null].concat(navNodes.slice(0, -1));
var nextNodes = navNodes.slice(1).concat([null]);
diff --git a/lib/parse/summary.js b/lib/parse/summary.js
index 1fd5676..7e54df0 100644
--- a/lib/parse/summary.js
+++ b/lib/parse/summary.js
@@ -94,18 +94,35 @@ function parseChapter(nodes, nums) {
});
}
+function defaultChapterList(chapterList) {
+ var first = _.first(chapterList);
+
+ var chapter = parseChapter(first, [0]);
+
+ // Already have README node, we're good to go
+ if(chapter.path === 'README.md') {
+ return chapterList;
+ }
+
+ return [
+ [ { type: 'text', text: '[Introduction](README.md)' } ]
+ ].concat(chapterList);
+}
+
function parseSummary(src) {
var nodes = marked.lexer(src);
// Get out list of chapters
- var chapterList = filterList(nodes);
+ var chapterList = listSplit(
+ filterList(nodes),
+ 'list_item_start', 'list_item_end'
+ );
// Split out chapter sections
- var chapters = _.chain(listSplit(chapterList, 'list_item_start', 'list_item_end'))
+ var chapters = defaultChapterList(chapterList)
.map(function(nodes, i) {
- return parseChapter(nodes, [i + 1]);
- })
- .value();
+ return parseChapter(nodes, [i]);
+ });
return {
chapters: chapters