summaryrefslogtreecommitdiffstats
path: root/lib/api/encodeSummary.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/encodeSummary.js')
-rw-r--r--lib/api/encodeSummary.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/api/encodeSummary.js b/lib/api/encodeSummary.js
new file mode 100644
index 0000000..0d66ded
--- /dev/null
+++ b/lib/api/encodeSummary.js
@@ -0,0 +1,51 @@
+var encodeSummaryArticle = require('../json/encodeSummaryArticle');
+
+/**
+ Encode summary to provide an API to plugin
+
+ @param {Output} output
+ @param {Config} config
+ @return {Object}
+*/
+function encodeSummary(output, summary) {
+ var result = {
+ /**
+ Iterate over the summary, it stops when the "iter" returns false
+
+ @param {Function} iter
+ */
+ walk: function (iter) {
+ summary.getArticle(function(article) {
+ var jsonArticle = encodeSummaryArticle(article, false);
+
+ return iter(jsonArticle);
+ });
+ },
+
+ /**
+ Get an article by its level
+
+ @param {String} level
+ @return {Object}
+ */
+ getArticleByLevel: function(level) {
+ var article = summary.getByLevel(level);
+ return (article? encodeSummaryArticle(article) : undefined);
+ },
+
+ /**
+ Get an article by its path
+
+ @param {String} level
+ @return {Object}
+ */
+ getArticleByPath: function(level) {
+ var article = summary.getByPath(level);
+ return (article? encodeSummaryArticle(article) : undefined);
+ }
+ };
+
+ return result;
+}
+
+module.exports = encodeSummary;