diff options
author | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-03-31 19:34:06 -0700 |
---|---|---|
committer | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-03-31 19:34:06 -0700 |
commit | 0ad6533f12ffacb99d5c69332310849ebcf29e16 (patch) | |
tree | 36872dd22cc6492a4dac8803cfdc4a7f453fe301 /lib/parse/summary.js | |
parent | 2234026153912c341f68e7ace3736cd90694d405 (diff) | |
download | gitbook-0ad6533f12ffacb99d5c69332310849ebcf29e16.zip gitbook-0ad6533f12ffacb99d5c69332310849ebcf29e16.tar.gz gitbook-0ad6533f12ffacb99d5c69332310849ebcf29e16.tar.bz2 |
Add level attribute to chapters/articles
Diffstat (limited to 'lib/parse/summary.js')
-rw-r--r-- | lib/parse/summary.js | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/parse/summary.js b/lib/parse/summary.js index 1237b37..0995c40 100644 --- a/lib/parse/summary.js +++ b/lib/parse/summary.js @@ -62,20 +62,24 @@ function filterList(nodes) { // Parses an Article or Chapter title // supports extracting links -function parseTitle(src) { +function parseTitle(src, nums) { // Check if it's a link var matches = marked.InlineLexer.rules.link.exec(src); + var level = nums.join('.'); + // Not a link, return plain text if(!matches) { return { title: src, + level: level, path: null, }; } return { title: matches[1], + level: level, // Replace .md references with .html path: matches[2].replace(/\.md$/, '.html'), @@ -85,13 +89,13 @@ function parseTitle(src) { }; } -function parseArticle(nodes) { - return parseTitle(_.first(nodes).text); +function parseArticle(chapterNum, nodes, idx) { + return parseTitle(_.first(nodes).text, [chapterNum, idx+1]); } -function parseChapter(nodes) { - return _.extend(parseTitle(_.first(nodes).text), { - articles: _.map(listSplit(filterList(nodes), 'list_item_start', 'list_item_end'), parseArticle) +function parseChapter(nodes, idx) { + return _.extend(parseTitle(_.first(nodes).text, [idx+1]), { + articles: _.map(listSplit(filterList(nodes), 'list_item_start', 'list_item_end'), parseArticle.bind(null, idx+1)) }); } |