diff options
Diffstat (limited to 'lib/models/summary.js')
-rw-r--r-- | lib/models/summary.js | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/models/summary.js b/lib/models/summary.js index d1df91f..d8d0603 100644 --- a/lib/models/summary.js +++ b/lib/models/summary.js @@ -18,17 +18,20 @@ Summary.prototype.getParts = function() { }; /** - Return an article using an iterator to find it + Return an article using an iterator to find it. + if "partIter" is set, it can also return a Part. @param {Function} iter - @return {Article} + @param {Function} partIter + @return {Article|Part} */ -Summary.prototype.getArticle = function(iter) { +Summary.prototype.getArticle = function(iter, partIter) { var parts = this.getParts(); return parts.reduce(function(result, part) { if (result) return result; + if (partIter && partIter(part)) return part; return SummaryArticle.findArticle(part, iter); }, null); }; @@ -41,9 +44,11 @@ Summary.prototype.getArticle = function(iter) { @return {Article} */ Summary.prototype.getByLevel = function(level) { - return this.getArticle(function(article) { + function iterByLevel(article) { return (article.getLevel() === level); - }); + } + + return this.getArticle(iterByLevel, iterByLevel); }; /** @@ -70,7 +75,7 @@ Summary.createFromParts = function createFromParts(file, parts) { return part; } - return SummaryPart.create(part, i); + return SummaryPart.create(part, i + 1); }); return new Summary({ |