diff options
Diffstat (limited to 'lib/output/generateBook.js')
-rw-r--r-- | lib/output/generateBook.js | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/lib/output/generateBook.js b/lib/output/generateBook.js index 3f04875..fb03418 100644 --- a/lib/output/generateBook.js +++ b/lib/output/generateBook.js @@ -1,42 +1,46 @@ -var Parse = require('../parse'); +var Output = require('../models/output'); +var Promise = require('../utils/promise'); -/** - List all assets for a book +var callHook = require('./callHook'); +var preparePlugins = require('./preparePlugins'); +var preparePages = require('./preparePages'); +var prepareAssets = require('./prepareAssets'); +var generateAssets = require('./generateAssets'); +var generatePages = require('./generatePages'); - @param {Book} book - @param {Map<String:Page>} pages - @param -*/ -function listAssets(book, pages) { - var fs = book.getContentFS(); - - return fs.listAllFiles() - .then(function(files) { - return files.filterNot(function(file) { - return ( - book.isContentFileIgnored(file) || - pages.has(file) - ); - }); - }); -} +/** + Generate a book using a generator. + The overall process is: + 1. List and load plugins for this book + 2. Call hook "config" + 3. Call hook "init" + 4. Initialize generator + 5. List all assets and pages + 6. Copy all assets to output + 7. Generate all pages + 8. Call hook "finish:before" + 9. Finish generation + 10. Call hook "finish" -/** - Generate a book using a generator @param {Generator} generator @param {Book} book + @param {Object} options @return {Promise} */ -function generateBook(generator, book) { - // List all parsable pages - return Parse.parsePagesList(book) - .then(function(pages) { - return listAssets(book, pages); - }); +function generateBook(generator, book, options) { + options = generator.Options(options); + + return Promise( + Output.createForBook(book, options) + ) + .then(preparePlugins) + .then(preparePages) + .then(prepareAssets) + .then(generateAssets.bind(null, generator)) + .then(generatePages.bind(null, generator)); } - module.exports = generateBook; |