summaryrefslogtreecommitdiffstats
path: root/packages/gitbook/src/json/encodeSummaryArticle.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gitbook/src/json/encodeSummaryArticle.js')
-rw-r--r--packages/gitbook/src/json/encodeSummaryArticle.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/packages/gitbook/src/json/encodeSummaryArticle.js b/packages/gitbook/src/json/encodeSummaryArticle.js
new file mode 100644
index 0000000..0fb6368
--- /dev/null
+++ b/packages/gitbook/src/json/encodeSummaryArticle.js
@@ -0,0 +1,30 @@
+
+/**
+ * Encode a SummaryArticle to JSON
+ *
+ * @param {SummaryArticle} article
+ * @param {URIIndex} urls
+ * @param {Boolean} recursive
+ * @return {Object}
+ */
+function encodeSummaryArticle(article, urls, recursive) {
+ let articles = undefined;
+ if (recursive !== false) {
+ articles = article.getArticles()
+ .map(innerArticle => encodeSummaryArticle(innerArticle, urls, recursive))
+ .toJS();
+ }
+
+ return {
+ title: article.getTitle(),
+ level: article.getLevel(),
+ depth: article.getDepth(),
+ anchor: article.getAnchor(),
+ url: urls.resolveToURL(article.getPath() || article.getUrl()),
+ path: article.getPath(),
+ ref: article.getRef(),
+ articles
+ };
+}
+
+module.exports = encodeSummaryArticle;