diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-02-24 18:24:49 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-02-24 18:24:49 +0100 |
commit | 5b20027f2ec4939a546f11753fb1098cde3b9a59 (patch) | |
tree | d43f3ced722d3f3f9e43633009365b9a01ae442e | |
parent | 4499f71dba79447871ed1ae34a4efd9c65fc3f78 (diff) | |
download | gitbook-5b20027f2ec4939a546f11753fb1098cde3b9a59.zip gitbook-5b20027f2ec4939a546f11753fb1098cde3b9a59.tar.gz gitbook-5b20027f2ec4939a546f11753fb1098cde3b9a59.tar.bz2 |
Use cover file from main book in multilingual book (when no cover is set for language)
-rw-r--r-- | lib/output/ebook.js | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/lib/output/ebook.js b/lib/output/ebook.js index cd5e960..0cd1807 100644 --- a/lib/output/ebook.js +++ b/lib/output/ebook.js @@ -96,22 +96,34 @@ EbookOutput.prototype.getPDFTemplate = function(tpl) { }); }; +// Locate the cover file to use +// Use configuration or search a "cover.jpg" file +// For multi-lingual book, it can use the one from the main book +EbookOutput.prototype.locateCover = function() { + var cover = this.book.config.get('cover', 'cover.jpg'); + + // Resolve to absolute + cover = this.resolve(cover); + + // Cover doesn't exist and multilingual? + if (!fs.existsSync(cover) && this.parent) { + return this.parent.locateCover(); + } + + return cover; +}; + // Generate options for ebook-convert EbookOutput.prototype.ebookConvertOption = function() { var that = this; - var cover = this.book.config.get('cover'); - - if (!cover && fs.existsSync(this.resolve('cover.jpg'))) { - cover = this.resolve('cover.jpg'); - } var options = { - '--cover': cover, - '--title': this.book.config.get('title'), - '--comments': this.book.config.get('description'), - '--isbn': this.book.config.get('isbn'), - '--authors': this.book.config.get('author'), - '--language': this.book.config.get('language'), + '--cover': this.locateCover(), + '--title': that.book.config.get('title'), + '--comments': that.book.config.get('description'), + '--isbn': that.book.config.get('isbn'), + '--authors': that.book.config.get('author'), + '--language': that.book.config.get('language'), '--book-producer': 'GitBook', '--publisher': 'GitBook', '--chapter': 'descendant-or-self::*[contains(concat(\' \', normalize-space(@class), \' \'), \' book-chapter \')]', @@ -123,15 +135,15 @@ EbookOutput.prototype.ebookConvertOption = function() { '--breadth-first': true }; - if (this.opts.format == 'epub') { + if (that.opts.format == 'epub') { options = _.extend(options, { '--dont-split-on-page-breaks': true }); } - if (this.opts.format != 'pdf') return Promise(options); + if (that.opts.format != 'pdf') return Promise(options); - var pdfOptions = this.book.config.get('pdf'); + var pdfOptions = that.book.config.get('pdf'); options = _.extend(options, { '--chapter-mark': String(pdfOptions.chapterMark), @@ -149,7 +161,7 @@ EbookOutput.prototype.ebookConvertOption = function() { '--pdf-sans-family': String(pdfOptions.fontFamily) }); - return this.getPDFTemplate('header') + return that.getPDFTemplate('header') .then(function(tpl) { options['--pdf-header-template'] = tpl; |