diff options
author | Shaform <shaform@gmail.com> | 2014-06-17 22:08:46 +0800 |
---|---|---|
committer | Shaform <shaform@gmail.com> | 2014-06-17 22:08:46 +0800 |
commit | 6bbefad24e6aa4a5b51b4b21bdf30b73f8cb4d41 (patch) | |
tree | d2efbbb62f9746b19b683c11a302c9afe385a2be /lib/parse | |
parent | 1f4cf33dd08b439cadb5c649654ecd6d3f4b399d (diff) | |
parent | d6eb8e4c6042262408c3c0b8d67bccecfa4bf882 (diff) | |
download | gitbook-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.js | 2 | ||||
-rw-r--r-- | lib/parse/navigation.js | 10 | ||||
-rw-r--r-- | lib/parse/summary.js | 27 |
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 |