diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-03-09 10:43:12 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-03-09 10:43:12 +0100 |
commit | 34fc2831e0cf0fed01c71cec28d93472d87f455b (patch) | |
tree | a803cc907c20491ba02863b5d3dd5aedf6bfed10 /lib/generator.js | |
parent | e1594cde2c32e4ff48f6c4eff3d3d461743d74e1 (diff) | |
parent | 1bf68a5aa0703b5a1815cfe4ebb731b5fb6ed9d2 (diff) | |
download | gitbook-34fc2831e0cf0fed01c71cec28d93472d87f455b.zip gitbook-34fc2831e0cf0fed01c71cec28d93472d87f455b.tar.gz gitbook-34fc2831e0cf0fed01c71cec28d93472d87f455b.tar.bz2 |
Merge branch 'version/2.0'
Diffstat (limited to 'lib/generator.js')
-rw-r--r-- | lib/generator.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/generator.js b/lib/generator.js new file mode 100644 index 0000000..c809de2 --- /dev/null +++ b/lib/generator.js @@ -0,0 +1,78 @@ +var _ = require("lodash"); +var path = require("path"); +var Q = require("q"); +var fs = require("./utils/fs"); + +var Plugin = require("./plugin"); + +var BaseGenerator = function(book) { + this.book = book; + + Object.defineProperty(this, "options", { + get: function () { + return this.book.options; + } + }); + + _.bindAll(this); +}; + +BaseGenerator.prototype.callHook = function(name, data) { + return this.book.plugins.hook(name, data); +}; + +// Prepare the genertor +BaseGenerator.prototype.prepare = function() { + var that = this; + + return that.callHook("init"); +}; + +// Write a parsed file to the output +BaseGenerator.prototype.convertFile = function(input) { + return Q.reject(new Error("Could not convert "+input)); +}; + +// Copy file to the output (non parsable) +BaseGenerator.prototype.transferFile = function(input) { + return fs.copy( + path.join(this.book.root, input), + path.join(this.options.output, input) + ); +}; + +// Copy a folder to the output +BaseGenerator.prototype.transferFolder = function(input) { + return fs.mkdirp( + path.join(this.book.options.output, input) + ); +}; + +// Copy the cover picture +BaseGenerator.prototype.copyCover = function() { + var that = this; + + return Q.all([ + fs.copy(path.join(that.book.root, "cover.jpg"), path.join(that.options.output, "cover.jpg")), + fs.copy(path.join(that.book.root, "cover_small.jpg"), path.join(that.options.output, "cover_small.jpg")) + ]) + .fail(function() { + // If orignaly from multi-lang, try copy from parent + if (!that.book.isSubBook()) return; + + return Q.all([ + fs.copy(path.join(that.book.parentRoot(), "cover.jpg"), path.join(that.options.output, "cover.jpg")), + fs.copy(path.join(that.book.parentRoot(), "cover_small.jpg"), path.join(that.options.output, "cover_small.jpg")) + ]); + }) + .fail(function(err) { + return Q(); + }); +}; + +// At teh end of the generation +BaseGenerator.prototype.finish = function() { + return Q.reject(new Error("Could not finish generation")); +}; + +module.exports = BaseGenerator; |