summaryrefslogtreecommitdiffstats
path: root/lib/models/summary.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/models/summary.js')
-rw-r--r--lib/models/summary.js17
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({