diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-10-06 20:08:47 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-10-06 20:08:47 +0200 |
commit | 58ae96b7f6a5cd3b7c1fd1d650fcaae4686f578d (patch) | |
tree | c1555e51d2d399062d52a8b1df8eda1852a2bf7c /packages/gitbook/src/json | |
parent | 1354582c4e0d61c7608965f36b3c27ee3e39dc78 (diff) | |
download | gitbook-58ae96b7f6a5cd3b7c1fd1d650fcaae4686f578d.zip gitbook-58ae96b7f6a5cd3b7c1fd1d650fcaae4686f578d.tar.gz gitbook-58ae96b7f6a5cd3b7c1fd1d650fcaae4686f578d.tar.bz2 |
Add "url" to summary articles and files in json representation
Diffstat (limited to 'packages/gitbook/src/json')
-rw-r--r-- | packages/gitbook/src/json/encodeBook.js | 39 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeBookWithPage.js | 22 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeFile.js | 10 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeGlossary.js | 15 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeGlossaryEntry.js | 10 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeLanguages.js | 13 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeOutput.js | 25 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeOutputWithPage.js | 25 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodePage.js | 15 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeReadme.js | 11 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeState.js | 42 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeSummary.js | 11 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeSummaryArticle.js | 10 | ||||
-rw-r--r-- | packages/gitbook/src/json/encodeSummaryPart.js | 12 | ||||
-rw-r--r-- | packages/gitbook/src/json/index.js | 17 |
15 files changed, 108 insertions, 169 deletions
diff --git a/packages/gitbook/src/json/encodeBook.js b/packages/gitbook/src/json/encodeBook.js deleted file mode 100644 index c5632d2..0000000 --- a/packages/gitbook/src/json/encodeBook.js +++ /dev/null @@ -1,39 +0,0 @@ -const extend = require('extend'); - -const gitbook = require('../gitbook'); -const encodeSummary = require('./encodeSummary'); -const encodeGlossary = require('./encodeGlossary'); -const encodeReadme = require('./encodeReadme'); -const encodeLanguages = require('./encodeLanguages'); - -/** - * Encode a book to JSON - * - * @param {Book} - * @return {Object} - */ -function encodeBookToJson(book) { - const config = book.getConfig(); - const language = book.getLanguage(); - - const variables = config.getValue('variables', {}); - - return { - summary: encodeSummary(book.getSummary()), - glossary: encodeGlossary(book.getGlossary()), - readme: encodeReadme(book.getReadme()), - config: book.getConfig().getValues().toJS(), - - languages: book.isMultilingual() ? encodeLanguages(book.getLanguages()) : undefined, - - gitbook: { - version: gitbook.version, - time: gitbook.START_TIME - }, - book: extend({ - language: language ? language : undefined - }, variables.toJS()) - }; -} - -module.exports = encodeBookToJson; diff --git a/packages/gitbook/src/json/encodeBookWithPage.js b/packages/gitbook/src/json/encodeBookWithPage.js deleted file mode 100644 index f593af2..0000000 --- a/packages/gitbook/src/json/encodeBookWithPage.js +++ /dev/null @@ -1,22 +0,0 @@ -const encodeBook = require('./encodeBook'); -const encodePage = require('./encodePage'); -const encodeFile = require('./encodeFile'); - -/** - * Return a JSON representation of a book with a specific file - * - * @param {Book} output - * @param {Page} page - * @return {Object} - */ -function encodeBookWithPage(book, page) { - const file = page.getFile(); - - const result = encodeBook(book); - result.page = encodePage(page, book.getSummary()); - result.file = encodeFile(file); - - return result; -} - -module.exports = encodeBookWithPage; diff --git a/packages/gitbook/src/json/encodeFile.js b/packages/gitbook/src/json/encodeFile.js index 1f41228..2295ac1 100644 --- a/packages/gitbook/src/json/encodeFile.js +++ b/packages/gitbook/src/json/encodeFile.js @@ -2,11 +2,11 @@ /** * Return a JSON representation of a file * - * @param {File} file - * @param {String} url? - * @return {Object} json + * @param {File} file + * @param {URIIndex} urls + * @return {JSON} json */ -function encodeFileToJson(file, url) { +function encodeFileToJson(file, urls) { const filePath = file.getPath(); if (!filePath) { return undefined; @@ -16,7 +16,7 @@ function encodeFileToJson(file, url) { path: filePath, mtime: file.getMTime(), type: file.getType(), - url + url: urls.resolveToURL(filePath) }; } diff --git a/packages/gitbook/src/json/encodeGlossary.js b/packages/gitbook/src/json/encodeGlossary.js index 6bdd683..d82bb62 100644 --- a/packages/gitbook/src/json/encodeGlossary.js +++ b/packages/gitbook/src/json/encodeGlossary.js @@ -2,17 +2,18 @@ const encodeFile = require('./encodeFile'); const encodeGlossaryEntry = require('./encodeGlossaryEntry'); /** - Encode a glossary to JSON - - @param {Glossary} - @return {Object} -*/ -function encodeGlossary(glossary) { + * Encode a glossary to JSON + * + * @param {Glossary} glossary + * @param {URIIndex} urls + * @return {JSON} json + */ +function encodeGlossary(glossary, urls) { const file = glossary.getFile(); const entries = glossary.getEntries(); return { - file: encodeFile(file), + file: encodeFile(file, urls), entries: entries .map(encodeGlossaryEntry).toJS() }; diff --git a/packages/gitbook/src/json/encodeGlossaryEntry.js b/packages/gitbook/src/json/encodeGlossaryEntry.js index d163f45..52e13c3 100644 --- a/packages/gitbook/src/json/encodeGlossaryEntry.js +++ b/packages/gitbook/src/json/encodeGlossaryEntry.js @@ -1,10 +1,10 @@ /** - Encode a SummaryArticle to JSON - - @param {GlossaryEntry} - @return {Object} -*/ + * Encode a SummaryArticle to JSON + * + * @param {GlossaryEntry} entry + * @return {JSON} json + */ function encodeGlossaryEntry(entry) { return { id: entry.getID(), diff --git a/packages/gitbook/src/json/encodeLanguages.js b/packages/gitbook/src/json/encodeLanguages.js index fc7487b..e1ef2ef 100644 --- a/packages/gitbook/src/json/encodeLanguages.js +++ b/packages/gitbook/src/json/encodeLanguages.js @@ -1,17 +1,18 @@ const encodeFile = require('./encodeFile'); /** - Encode a languages listing to JSON - - @param {Languages} - @return {Object} + * Encode a languages listing to JSON + * + * @param {Languages} languages + * @param {URIIndex} urls + * @return {JSON} json */ -function encodeLanguages(languages) { +function encodeLanguages(languages, urls) { const file = languages.getFile(); const list = languages.getList(); return { - file: encodeFile(file), + file: encodeFile(file, urls), list: list .valueSeq() .map(function(lang) { diff --git a/packages/gitbook/src/json/encodeOutput.js b/packages/gitbook/src/json/encodeOutput.js deleted file mode 100644 index 31e5757..0000000 --- a/packages/gitbook/src/json/encodeOutput.js +++ /dev/null @@ -1,25 +0,0 @@ -const encodeBook = require('./encodeBook'); - -/** - * Encode an output to JSON - * - * @param {Output} - * @return {Object} - */ -function encodeOutputToJson(output) { - const book = output.getBook(); - const generator = output.getGenerator(); - const options = output.getOptions(); - - const result = encodeBook(book); - - result.output = { - name: generator - }; - - result.options = options.toJS(); - - return result; -} - -module.exports = encodeOutputToJson; diff --git a/packages/gitbook/src/json/encodeOutputWithPage.js b/packages/gitbook/src/json/encodeOutputWithPage.js deleted file mode 100644 index e6cb0c5..0000000 --- a/packages/gitbook/src/json/encodeOutputWithPage.js +++ /dev/null @@ -1,25 +0,0 @@ -const resolveFileToURL = require('../output/helper/resolveFileToURL'); - -const encodeOutput = require('./encodeOutput'); -const encodePage = require('./encodePage'); -const encodeFile = require('./encodeFile'); - -/** - * Return a JSON representation of a book with a specific file - * - * @param {Book} output - * @param {Page} page - * @return {Object} - */ -function encodeOutputWithPage(output, page) { - const file = page.getFile(); - const book = output.getBook(); - - const result = encodeOutput(output); - result.page = encodePage(page, book.getSummary()); - result.file = encodeFile(file, resolveFileToURL(output, file.getPath())); - - return result; -} - -module.exports = encodeOutputWithPage; diff --git a/packages/gitbook/src/json/encodePage.js b/packages/gitbook/src/json/encodePage.js index 0d31d7e..6610308 100644 --- a/packages/gitbook/src/json/encodePage.js +++ b/packages/gitbook/src/json/encodePage.js @@ -1,13 +1,14 @@ const encodeSummaryArticle = require('./encodeSummaryArticle'); /** - * Return a JSON representation of a page + * Return a JSON representation of a page. * - * @param {Page} page - * @param {Summary} summary - * @return {Object} json + * @param {Page} page + * @param {Summary} summary + * @param {URIIndex} urls + * @return {JSON} json */ -function encodePage(page, summary) { +function encodePage(page, summary, urls) { const file = page.getFile(); const attributes = page.getAttributes(); const article = summary.getByPath(file.getPath()); @@ -21,12 +22,12 @@ function encodePage(page, summary) { const nextArticle = summary.getNextArticle(article); if (nextArticle) { - result.next = encodeSummaryArticle(nextArticle); + result.next = encodeSummaryArticle(nextArticle, urls, false); } const prevArticle = summary.getPrevArticle(article); if (prevArticle) { - result.previous = encodeSummaryArticle(prevArticle); + result.previous = encodeSummaryArticle(prevArticle, urls, false); } } diff --git a/packages/gitbook/src/json/encodeReadme.js b/packages/gitbook/src/json/encodeReadme.js index 5fe5a63..dff81cf 100644 --- a/packages/gitbook/src/json/encodeReadme.js +++ b/packages/gitbook/src/json/encodeReadme.js @@ -1,16 +1,17 @@ const encodeFile = require('./encodeFile'); /** - * Encode a readme to JSON + * Encode a readme to JSON. * - * @param {Readme} - * @return {Object} + * @param {Readme} readme + * @param {URIIndex} urls + * @return {JSON} json */ -function encodeReadme(readme) { +function encodeReadme(readme, urls) { const file = readme.getFile(); return { - file: encodeFile(file) + file: encodeFile(file, urls) }; } diff --git a/packages/gitbook/src/json/encodeState.js b/packages/gitbook/src/json/encodeState.js new file mode 100644 index 0000000..d264835 --- /dev/null +++ b/packages/gitbook/src/json/encodeState.js @@ -0,0 +1,42 @@ +const gitbook = require('../gitbook'); +const encodeSummary = require('./encodeSummary'); +const encodeGlossary = require('./encodeGlossary'); +const encodeReadme = require('./encodeReadme'); +const encodeLanguages = require('./encodeLanguages'); +const encodePage = require('./encodePage'); +const encodeFile = require('./encodeFile'); + +/** + * Encode context to JSON from an output instance. + * This JSON representation is used as initial state for the redux store. + * + * @param {Output} output + * @param {Page} page + * @return {JSON} + */ +function encodeStateToJSON(output, page) { + const book = output.getBook(); + const urls = output.getURLIndex(); + const file = page.getFile(); + + return { + output: { + name: output.getGenerator() + }, + gitbook: { + version: gitbook.version, + time: gitbook.START_TIME + }, + + summary: encodeSummary(book.getSummary(), urls), + glossary: encodeGlossary(book.getGlossary(), urls), + readme: encodeReadme(book.getReadme(), urls), + config: book.getConfig().getValues().toJS(), + languages: book.isMultilingual() ? encodeLanguages(book.getLanguages()) : undefined, + + page: encodePage(page, book.getSummary(), urls), + file: encodeFile(file, urls) + }; +} + +module.exports = encodeStateToJSON; diff --git a/packages/gitbook/src/json/encodeSummary.js b/packages/gitbook/src/json/encodeSummary.js index 0a9dbe7..8380379 100644 --- a/packages/gitbook/src/json/encodeSummary.js +++ b/packages/gitbook/src/json/encodeSummary.js @@ -4,16 +4,19 @@ const encodeSummaryPart = require('./encodeSummaryPart'); /** * Encode a summary to JSON * - * @param {Summary} + * @param {Summary} summary + * @param {URIIndex} urls * @return {Object} */ -function encodeSummary(summary) { +function encodeSummary(summary, urls) { const file = summary.getFile(); const parts = summary.getParts(); return { - file: encodeFile(file), - parts: parts.map(encodeSummaryPart).toJS() + file: encodeFile(file, urls), + parts: parts + .map(part => encodeSummaryPart(part, urls)) + .toJS() }; } diff --git a/packages/gitbook/src/json/encodeSummaryArticle.js b/packages/gitbook/src/json/encodeSummaryArticle.js index b6d7d9f..0fb6368 100644 --- a/packages/gitbook/src/json/encodeSummaryArticle.js +++ b/packages/gitbook/src/json/encodeSummaryArticle.js @@ -2,14 +2,16 @@ /** * Encode a SummaryArticle to JSON * - * @param {SummaryArticle} + * @param {SummaryArticle} article + * @param {URIIndex} urls + * @param {Boolean} recursive * @return {Object} */ -function encodeSummaryArticle(article, recursive) { +function encodeSummaryArticle(article, urls, recursive) { let articles = undefined; if (recursive !== false) { articles = article.getArticles() - .map(encodeSummaryArticle) + .map(innerArticle => encodeSummaryArticle(innerArticle, urls, recursive)) .toJS(); } @@ -18,7 +20,7 @@ function encodeSummaryArticle(article, recursive) { level: article.getLevel(), depth: article.getDepth(), anchor: article.getAnchor(), - url: article.getUrl(), + url: urls.resolveToURL(article.getPath() || article.getUrl()), path: article.getPath(), ref: article.getRef(), articles diff --git a/packages/gitbook/src/json/encodeSummaryPart.js b/packages/gitbook/src/json/encodeSummaryPart.js index 9ff3583..fbcdc4c 100644 --- a/packages/gitbook/src/json/encodeSummaryPart.js +++ b/packages/gitbook/src/json/encodeSummaryPart.js @@ -1,16 +1,18 @@ const encodeSummaryArticle = require('./encodeSummaryArticle'); /** - * Encode a SummaryPart to JSON + * Encode a SummaryPart to JSON. * - * @param {SummaryPart} - * @return {Object} + * @param {SummaryPart} part + * @param {URIIndex} urls + * @return {JSON} json */ -function encodeSummaryPart(part) { +function encodeSummaryPart(part, urls) { return { title: part.getTitle(), articles: part.getArticles() - .map(encodeSummaryArticle).toJS() + .map(article => encodeSummaryArticle(article, urls)) + .toJS() }; } diff --git a/packages/gitbook/src/json/index.js b/packages/gitbook/src/json/index.js index 3b68f5e..49ab195 100644 --- a/packages/gitbook/src/json/index.js +++ b/packages/gitbook/src/json/index.js @@ -1,13 +1,10 @@ module.exports = { - encodeOutput: require('./encodeOutput'), - encodeBookWithPage: require('./encodeBookWithPage'), - encodeOutputWithPage: require('./encodeOutputWithPage'), - encodeBook: require('./encodeBook'), - encodeFile: require('./encodeFile'), - encodePage: require('./encodePage'), - encodeSummary: require('./encodeSummary'), - encodeSummaryArticle: require('./encodeSummaryArticle'), - encodeReadme: require('./encodeReadme'), - encodeLanguages: require('./encodeLanguages') + encodeState: require('./encodeState'), + encodeFile: require('./encodeFile'), + encodePage: require('./encodePage'), + encodeSummary: require('./encodeSummary'), + encodeSummaryArticle: require('./encodeSummaryArticle'), + encodeReadme: require('./encodeReadme'), + encodeLanguages: require('./encodeLanguages') }; |