diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-04-29 15:09:11 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-04-29 15:09:11 +0200 |
commit | 07a5daefb025868ecf41054713a18d50e01511c0 (patch) | |
tree | 1a90b356589c0e23797ce8a06a33ae06596e75ab | |
parent | 0ed524bce508f3f9ebb475d06c662cad948e224a (diff) | |
download | gitbook-07a5daefb025868ecf41054713a18d50e01511c0.zip gitbook-07a5daefb025868ecf41054713a18d50e01511c0.tar.gz gitbook-07a5daefb025868ecf41054713a18d50e01511c0.tar.bz2 |
Generate SUMMARY.html for ebook output
-rw-r--r-- | lib/output/__tests__/ebook.js | 16 | ||||
-rw-r--r-- | lib/output/createTemplateEngine.js | 2 | ||||
-rw-r--r-- | lib/output/ebook/index.js | 4 | ||||
-rw-r--r-- | lib/output/ebook/onFinish.js | 25 | ||||
-rw-r--r-- | lib/output/ebook/onInit.js | 4 | ||||
-rw-r--r-- | lib/output/ebook/onPage.js | 4 | ||||
-rw-r--r-- | lib/output/website/index.js | 16 |
7 files changed, 50 insertions, 21 deletions
diff --git a/lib/output/__tests__/ebook.js b/lib/output/__tests__/ebook.js new file mode 100644 index 0000000..dabf360 --- /dev/null +++ b/lib/output/__tests__/ebook.js @@ -0,0 +1,16 @@ +var generateMock = require('../generateMock'); +var EbookGenerator = require('../ebook'); + +describe('EbookGenerator', function() { + + pit('should generate a SUMMARY.html', function() { + return generateMock(EbookGenerator, { + 'README.md': 'Hello World' + }) + .then(function(folder) { + expect(folder).toHaveFile('SUMMARY.html'); + expect(folder).toHaveFile('index.html'); + }); + }); +}); + diff --git a/lib/output/createTemplateEngine.js b/lib/output/createTemplateEngine.js index 523c850..05718ea 100644 --- a/lib/output/createTemplateEngine.js +++ b/lib/output/createTemplateEngine.js @@ -35,6 +35,8 @@ function createTemplateEngine(output) { filters: filters, blocks: blocks, loader: loader + + // todo: build context for filters/blocks }); } diff --git a/lib/output/ebook/index.js b/lib/output/ebook/index.js index 3aaa7e7..344a6c5 100644 --- a/lib/output/ebook/index.js +++ b/lib/output/ebook/index.js @@ -1,7 +1,7 @@ var extend = require('extend'); -var websiteGenerator = require('../website'); +var WebsiteGenerator = require('../website'); -module.exports = extend({}, websiteGenerator, { +module.exports = extend({}, WebsiteGenerator, { name: 'ebook', onInit: require('./onInit'), onPage: require('./onPage'), diff --git a/lib/output/ebook/onFinish.js b/lib/output/ebook/onFinish.js index 81fa45d..e82f679 100644 --- a/lib/output/ebook/onFinish.js +++ b/lib/output/ebook/onFinish.js @@ -1,20 +1,29 @@ -var websiteGenerator = require('../website'); +var WebsiteGenerator = require('../website'); +var JSONUtils = require('../../json'); +var Templating = require('../../templating'); +var writeFile = require('../helper/writeFile'); /** - Finish the generation, generate the ebook file using ebook-convert + Finish the generation, generates the SUMMARY.html @param {Output} @return {Output} */ function onFinish(output) { - return websiteGenerator.onFinish(output) - .then(function(resultOutput) { + var book = output.getBook(); + var options = output.getOptions(); + var prefix = options.get('prefix'); - // todo: - // - render SUMMARY.html - // - Build ebook using ebook-convert + var filePath = 'SUMMARY.html'; + var engine = WebsiteGenerator.createTemplateEngine(output, filePath); + var context = JSONUtils.encodeOutput(output); - return resultOutput; + // Render the theme + return Templating.renderFile(engine, prefix + '/SUMMARY.html', context) + + // Write it to the disk + .then(function(html) { + return writeFile(output, filePath, html); }); } diff --git a/lib/output/ebook/onInit.js b/lib/output/ebook/onInit.js index 9cee141..402e318 100644 --- a/lib/output/ebook/onInit.js +++ b/lib/output/ebook/onInit.js @@ -1,4 +1,4 @@ -var websiteGenerator = require('../website'); +var WebsiteGenerator = require('../website'); /** Initialize the generator @@ -7,7 +7,7 @@ var websiteGenerator = require('../website'); @return {Output} */ function onInit(output) { - return websiteGenerator.onInit(output) + return WebsiteGenerator.onInit(output) .then(function(resultOutput) { var options = resultOutput.getOptions(); diff --git a/lib/output/ebook/onPage.js b/lib/output/ebook/onPage.js index 13edf17..21fd34c 100644 --- a/lib/output/ebook/onPage.js +++ b/lib/output/ebook/onPage.js @@ -1,4 +1,4 @@ -var website = require('../website'); +var WebsiteGenerator = require('../website'); var Modifiers = require('../modifiers'); /** @@ -17,7 +17,7 @@ function onPage(output, page) { // Write page using website generator .then(function(resultPage) { - return website.onPage(output, resultPage); + return WebsiteGenerator.onPage(output, resultPage); }); } diff --git a/lib/output/website/index.js b/lib/output/website/index.js index 0c9fed8..000d417 100644 --- a/lib/output/website/index.js +++ b/lib/output/website/index.js @@ -1,10 +1,12 @@ module.exports = { - name: 'website', - State: require('./state'), - Options: require('./options'), - onInit: require('./onInit'), - onFinish: require('./onFinish'), - onPage: require('./onPage'), - onAsset: require('./onAsset') + name: 'website', + State: require('./state'), + Options: require('./options'), + onInit: require('./onInit'), + onFinish: require('./onFinish'), + onPage: require('./onPage'), + onAsset: require('./onAsset'), + onAsset: require('./onAsset'), + createTemplateEngine: require('./createTemplateEngine') }; |