summaryrefslogtreecommitdiffstats
path: root/lib/models
diff options
context:
space:
mode:
authorSamy Pesse <samypesse@gmail.com>2016-04-26 14:12:26 +0200
committerSamy Pesse <samypesse@gmail.com>2016-04-26 14:12:26 +0200
commitbe828cf004056d143c1e46c10ab29cc147fc14f8 (patch)
tree7f7c072eb286cda222ceb5d66f78d2838b16a71f /lib/models
parent1057bb15d3b7250dc541a126754750ec6b8a79a2 (diff)
downloadgitbook-be828cf004056d143c1e46c10ab29cc147fc14f8.zip
gitbook-be828cf004056d143c1e46c10ab29cc147fc14f8.tar.gz
gitbook-be828cf004056d143c1e46c10ab29cc147fc14f8.tar.bz2
Add duration to final log for generation
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/summary.js31
-rw-r--r--lib/models/summaryArticle.js8
2 files changed, 27 insertions, 12 deletions
diff --git a/lib/models/summary.js b/lib/models/summary.js
index d0dc8af..d1df91f 100644
--- a/lib/models/summary.js
+++ b/lib/models/summary.js
@@ -7,7 +7,7 @@ var SummaryArticle = require('./summaryArticle');
var Summary = Immutable.Record({
file: File(),
parts: Immutable.List()
-});
+}, 'Summary');
Summary.prototype.getFile = function() {
return this.get('file');
@@ -18,27 +18,44 @@ Summary.prototype.getParts = function() {
};
/**
+ Return an article using an iterator to find it
+
+ @param {Function} iter
+ @return {Article}
+*/
+Summary.prototype.getArticle = function(iter) {
+ var parts = this.getParts();
+
+ return parts.reduce(function(result, part) {
+ if (result) return result;
+
+ return SummaryArticle.findArticle(part, iter);
+ }, null);
+};
+
+
+/**
Return a part/article by its level
@param {String} level
- @return {Part|Article}
+ @return {Article}
*/
Summary.prototype.getByLevel = function(level) {
- return SummaryArticle.findArticle(this, function(article) {
+ return this.getArticle(function(article) {
return (article.getLevel() === level);
- }, 'getParts');
+ });
};
/**
Return an article by its path
@param {String} filePath
- @return {Part|Article}
+ @return {Article}
*/
Summary.prototype.getByPath = function(filePath) {
- return SummaryArticle.findArticle(this, function(article) {
+ return this.getArticle(function(article) {
return (article.getPath() === filePath);
- }, 'getParts');
+ });
};
/**
diff --git a/lib/models/summaryArticle.js b/lib/models/summaryArticle.js
index d6cd045..ec1104c 100644
--- a/lib/models/summaryArticle.js
+++ b/lib/models/summaryArticle.js
@@ -11,7 +11,7 @@ var SummaryArticle = Immutable.Record({
title: String(),
ref: String(),
articles: Immutable.List()
-});
+}, 'SummaryArticle');
SummaryArticle.prototype.getLevel = function() {
return this.get('level');
@@ -125,12 +125,10 @@ SummaryArticle.create = function(def, level) {
@param {Article|Part} base
@param {Function(article)} iter
- @param {String} method
@return {Article}
*/
-SummaryArticle.findArticle = function(base, iter, method) {
- method = method || 'getArticles';
- var articles = base[method]();
+SummaryArticle.findArticle = function(base, iter) {
+ var articles = base.getArticles();
return articles.reduce(function(result, article) {
if (result) return result;