summaryrefslogtreecommitdiffstats
path: root/lib/output/generateBook.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/output/generateBook.js')
-rw-r--r--lib/output/generateBook.js62
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;