diff options
Diffstat (limited to 'lib/book.js')
-rw-r--r-- | lib/book.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/book.js b/lib/book.js index df19f74..8fbac81 100644 --- a/lib/book.js +++ b/lib/book.js @@ -36,6 +36,9 @@ var Book = function(root, options, parent) { // Sub-books this.books = []; + + // Files in the book + this.files = []; }; // Initialize and parse the book: config, summary, glossary @@ -76,6 +79,10 @@ Book.prototype.parse = function() { if (multilingal) return; return that.parseGlossary(); }) + .then(function() { + if (multilingal) return; + return that.listAllFiles(); + }) .then(function() { // Init sub-books @@ -92,10 +99,28 @@ Book.prototype.parse = function() { // Generate the output Book.prototype.generate = function() { var that = this; + if (that.isMultilingual()) return that.generateMultiLingual(); return Q() + + // Clean output folder .then(function() { + return fs.clean(that.options.output); + }); +}; +// Generate the output for a multilingual book +Book.prototype.generateMultiLingual = function() { + var that = this; + + return Q() + .then(function() { + // Generate sub-books + return _.reduce(that.books, function(prev, book) { + return prev.then(function() { + return book.generate(); + }); + }, Q()); }); }; @@ -219,6 +244,16 @@ Book.prototype.statFile = function(filename) { return fs.stat(path.join(this.root, filename)); }; +// List all files in the book +Book.prototype.listAllFiles = function() { + var that = this; + + return fs.list(this.root) + .then(function(_files) { + that.files = _files; + }); +}; + // Retrun true if the book is a multilingual book Book.prototype.isMultilingual = function(filename) { return this.books.length > 0; |