diff options
Diffstat (limited to 'packages/gitbook/src/parse/walkSummary.js')
-rw-r--r-- | packages/gitbook/src/parse/walkSummary.js | 34 |
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; |