diff options
Diffstat (limited to 'lib/output.js')
-rw-r--r-- | lib/output.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/output.js b/lib/output.js new file mode 100644 index 0000000..2f40fb6 --- /dev/null +++ b/lib/output.js @@ -0,0 +1,47 @@ +var Promise = require('utils/promise'); +var generators = require('./generators'); +var PluginsManager = require('./plugins'); + +function Output(book, type) { + if (!generators[type]) throw new Error('Generator not found"' + type + '"'); + + this.book = book; + this.type = type; + this.plugins = new PluginsManager(book); + this.generator = new generators[type](this, type); +} + +// Start the generation, for a parsed book +Output.prototype.generate = function() { + var that = this; + + return Promise() + + // Initialize the generation + .then(function() { + return that.generator.prepare(); + }) + + // Process all files + .then(function() { + return that.book.fs.listAllFiles(that.book.root); + }) + .then(function(files) { + return Promise.serie(files, function(filename) { + var isPage = that.book.hasPage(filename); + + if (isPage) { + return that.generator.writePage(that.book.getPage(filename)); + } else { + return that.generator.writeFile(filename); + } + }); + }) + + // Finish the generation + .then(function() { + return that.generator.finish(); + }); +}; + +module.exports = Output; |