summaryrefslogtreecommitdiffstats
path: root/packages/gitbook/src/parse/walkSummary.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gitbook/src/parse/walkSummary.js')
-rw-r--r--packages/gitbook/src/parse/walkSummary.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/gitbook/src/parse/walkSummary.js b/packages/gitbook/src/parse/walkSummary.js
new file mode 100644
index 0000000..47feb1f
--- /dev/null
+++ b/packages/gitbook/src/parse/walkSummary.js
@@ -0,0 +1,34 @@
+const Promise = require('../utils/promise');
+
+/**
+ Walk over a list of articles
+
+ @param {List<Article>} articles
+ @param {Function(article)}
+ @return {Promise}
+*/
+function walkArticles(articles, fn) {
+ return Promise.forEach(articles, function(article) {
+ return Promise(fn(article))
+ .then(function() {
+ return walkArticles(article.getArticles(), fn);
+ });
+ });
+}
+
+/**
+ Walk over summary and execute "fn" on each article
+
+ @param {Summary} summary
+ @param {Function(article)}
+ @return {Promise}
+*/
+function walkSummary(summary, fn) {
+ const parts = summary.getParts();
+
+ return Promise.forEach(parts, function(part) {
+ return walkArticles(part.getArticles(), fn);
+ });
+}
+
+module.exports = walkSummary;