diff options
Diffstat (limited to 'lib/output')
-rw-r--r-- | lib/output/__tests__/json.js | 17 | ||||
-rw-r--r-- | lib/output/json/index.js | 3 | ||||
-rw-r--r-- | lib/output/json/onFinish.js | 25 |
3 files changed, 39 insertions, 6 deletions
diff --git a/lib/output/__tests__/json.js b/lib/output/__tests__/json.js index 46ab42f..9897813 100644 --- a/lib/output/__tests__/json.js +++ b/lib/output/__tests__/json.js @@ -25,5 +25,22 @@ describe('JSONGenerator', function() { expect(folder).toHaveFile('test/page.json'); }); }); + + it('should generate a multilingual book', function() { + return generateMock(JSONGenerator, { + 'LANGS.md': '# Languages\n\n* [en](en)\n* [fr](fr)', + 'en': { + 'README.md': 'Hello' + }, + 'fr': { + 'README.md': 'Bonjour' + } + }) + .then(function(folder) { + expect(folder).toHaveFile('en/README.json'); + expect(folder).toHaveFile('fr/README.json'); + expect(folder).toHaveFile('README.json'); + }); + }); }); diff --git a/lib/output/json/index.js b/lib/output/json/index.js index e24c127..361da06 100644 --- a/lib/output/json/index.js +++ b/lib/output/json/index.js @@ -2,5 +2,6 @@ module.exports = { name: 'json', Options: require('./options'), - onPage: require('./onPage') + onPage: require('./onPage'), + onFinish: require('./onFinish') }; diff --git a/lib/output/json/onFinish.js b/lib/output/json/onFinish.js index ff336a2..d41d778 100644 --- a/lib/output/json/onFinish.js +++ b/lib/output/json/onFinish.js @@ -2,6 +2,7 @@ var path = require('path'); var Promise = require('../../utils/promise'); var fs = require('../../utils/fs'); +var JSONUtils = require('../../json'); /** Finish the generation @@ -21,11 +22,25 @@ function onFinish(output) { var languages = book.getLanguages(); var mainLanguage = languages.getDefaultLanguage(); - // Copy README.json from it - return fs.copy( - path.resolve(outputRoot, mainLanguage.getID(), 'README.json'), - path.resolve(outputRoot, 'README.json') - ) + // Read the main JSON + return fs.readFile(path.resolve(outputRoot, mainLanguage.getID(), 'README.json'), 'utf8') + + // Extend the JSON + .then(function(content) { + var json = JSON.parse(content); + + json.languages = JSONUtils.encodeLanguages(languages); + + return json; + }) + + .then(function(json) { + return fs.writeFile( + path.resolve(outputRoot, 'README.json'), + JSON.stringify(json, null, 4) + ); + }) + .thenResolve(output); } |