diff options
-rw-r--r-- | lib/backbone/summary.js | 34 | ||||
-rw-r--r-- | lib/page/index.js | 1 |
2 files changed, 20 insertions, 15 deletions
diff --git a/lib/backbone/summary.js b/lib/backbone/summary.js index a1caae7..405c192 100644 --- a/lib/backbone/summary.js +++ b/lib/backbone/summary.js @@ -11,29 +11,35 @@ var BackboneFile = require('./file'); An article represent an entry in the Summary. It's defined by a title, a reference, and children articles, the reference (ref) can be a filename + anchor or an external file (optional) */ -function TOCArticle(summary, title, ref, articles, parent) { - this.summary = summary; - this.title = title; +function TOCArticle(def, parent) { + // Title + this.title = def.title; + + // Parent TOCPart or TOCArticle this.parent = parent; - if (ref && location.isExternal(ref)) { + // As string indicating the overall position + // ex: '1.0.0' + this.level = def.level; + + if (def.path && location.isExternal(def.path)) { throw error.ParsingError(new Error('SUMMARY can only contains relative locations')); } - if (!title) { + if (!def.title) { throw error.ParsingError(new Error('SUMMARY entries should have an non-empty title')); } - var parts = url.parse(ref); - this.ref = ref; + var parts = url.parse(def.path); + this.ref = def.path; if (!this.isExternal()) { this.path = parts.pathname; this.anchor = parts.hash; } - this.articles = _.map(articles || [], function(article) { + this.articles = _.map(def.articles || [], function(article) { if (article instanceof TOCArticle) return article; - return new TOCArticle(article.title, article.ref, article.articles, this); + return new TOCArticle(article, this); }, this); } @@ -48,6 +54,7 @@ TOCArticle.prototype.walk = function(iter) { // Return templating context for an article TOCArticle.prototype.getContext = function() { return { + level: this.level, title: this.title, path: this.isExternal()? undefined : this.path, anchor: this.isExternal()? undefined : this.anchor, @@ -118,12 +125,9 @@ TOCArticle.prototype.map = function(iter) { /* A part of a ToC is a composed of a tree of articles. */ -function TOCPart(summary, part) { - var that = this; - - this.summary = summary; +function TOCPart(part) { this.articles = _.map(part.articles || part.chapters, function(article) { - return new TOCArticle(that.summary, article.title, article.path, article.articles, this); + return new TOCArticle(article, this); }, this); } @@ -164,7 +168,7 @@ Summary.prototype.parse = function(content) { // TODO: update GitBook's parsers to return a list of parts .then(function(part) { - that.parts = [new TOCPart(that, part)]; + that.parts = [new TOCPart(part)]; // Update count of articles that._length = 0; diff --git a/lib/page/index.js b/lib/page/index.js index c92bdfa..51ed2aa 100644 --- a/lib/page/index.js +++ b/lib/page/index.js @@ -102,6 +102,7 @@ Page.prototype.getContext = function() { title: article? article.title : null, next: next? next.getContext() : null, previous: prev? prev.getContext() : null, + level: article? article.level : null, content: this.content } }; |