diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-04-26 13:03:53 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-04-26 13:03:53 +0200 |
commit | 1057bb15d3b7250dc541a126754750ec6b8a79a2 (patch) | |
tree | 02fbc54452c038254cd2563c77755b9942d0c533 /lib/models | |
parent | ea5e8891a833b20a2b03cc1e150fbe0d1df3a506 (diff) | |
download | gitbook-1057bb15d3b7250dc541a126754750ec6b8a79a2.zip gitbook-1057bb15d3b7250dc541a126754750ec6b8a79a2.tar.gz gitbook-1057bb15d3b7250dc541a126754750ec6b8a79a2.tar.bz2 |
Complete method getByPath of Summary
Diffstat (limited to 'lib/models')
-rw-r--r-- | lib/models/summary.js | 10 | ||||
-rw-r--r-- | lib/models/summaryArticle.js | 36 | ||||
-rw-r--r-- | lib/models/summaryPart.js | 10 |
3 files changed, 17 insertions, 39 deletions
diff --git a/lib/models/summary.js b/lib/models/summary.js index 4ab2d68..d0dc8af 100644 --- a/lib/models/summary.js +++ b/lib/models/summary.js @@ -24,7 +24,9 @@ Summary.prototype.getParts = function() { @return {Part|Article} */ Summary.prototype.getByLevel = function(level) { - return SummaryArticle.getByLevel(this, level, 'getParts'); + return SummaryArticle.findArticle(this, function(article) { + return (article.getLevel() === level); + }, 'getParts'); }; /** @@ -34,9 +36,9 @@ Summary.prototype.getByLevel = function(level) { @return {Part|Article} */ Summary.prototype.getByPath = function(filePath) { - // todo - - return undefined; + return SummaryArticle.findArticle(this, function(article) { + return (article.getPath() === filePath); + }, 'getParts'); }; /** diff --git a/lib/models/summaryArticle.js b/lib/models/summaryArticle.js index 945a16c..d6cd045 100644 --- a/lib/models/summaryArticle.js +++ b/lib/models/summaryArticle.js @@ -39,16 +39,6 @@ SummaryArticle.prototype.getDepth = function() { }; /** - Return an article by its level - - @param {String} level - @return {Article} -*/ -SummaryArticle.prototype.getByLevel = function(level) { - return SummaryArticle.getByLevel(this, level); -}; - -/** Get path (without anchor) to the pointing file @return {String} @@ -131,31 +121,27 @@ SummaryArticle.create = function(def, level) { /** - Return an article by its level + Find an article from a base one @param {Article|Part} base - @param {String} level + @param {Function(article)} iter @param {String} method @return {Article} */ -SummaryArticle.getByLevel = function(base, level, method) { +SummaryArticle.findArticle = function(base, iter, method) { method = method || 'getArticles'; var articles = base[method](); - var levelParts = level.split('.'); - var baseLevel = levelParts.shift(); - var result = articles.find(function(a) { - return a.getLevel() === baseLevel; - }); + return articles.reduce(function(result, article) { + if (result) return result; - if (!result) { - return undefined; - } - if (levelParts.length === 0) { - return result; - } + if (iter(article)) { + return article; + } - return SummaryArticle.getByLevel(result, levelParts.join('.')); + return SummaryArticle.findArticle(article, iter); + }, null); }; + module.exports = SummaryArticle; diff --git a/lib/models/summaryPart.js b/lib/models/summaryPart.js index 345cf83..c8c608d 100644 --- a/lib/models/summaryPart.js +++ b/lib/models/summaryPart.js @@ -25,16 +25,6 @@ SummaryPart.prototype.getArticles = function() { }; /** - Return an article by its level - - @param {String} level - @return {Article} -*/ -SummaryPart.prototype.getByLevel = function(level) { - return SummaryArticle.getByLevel(this, level); -}; - -/** Create a SummaryPart @param {Object} def |