diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-02-17 17:04:23 +0100 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-02-17 17:04:23 +0100 |
commit | d22c1f57e505eda6afe80fb6fe3a6b787d4aa699 (patch) | |
tree | 45d30347eb3dcc0d207247052cc2eb531149b262 /lib/output | |
parent | dac00be7b5a4aefa9cc3f63e5d94e729269bdfb0 (diff) | |
download | gitbook-d22c1f57e505eda6afe80fb6fe3a6b787d4aa699.zip gitbook-d22c1f57e505eda6afe80fb6fe3a6b787d4aa699.tar.gz gitbook-d22c1f57e505eda6afe80fb6fe3a6b787d4aa699.tar.bz2 |
Generate index.html instead of README.html
Diffstat (limited to 'lib/output')
-rw-r--r-- | lib/output/base.js | 25 | ||||
-rw-r--r-- | lib/output/website.js | 19 |
2 files changed, 42 insertions, 2 deletions
diff --git a/lib/output/base.js b/lib/output/base.js index 638ee25..a6cfa0d 100644 --- a/lib/output/base.js +++ b/lib/output/base.js @@ -3,6 +3,7 @@ var Ignore = require('ignore'); var path = require('path'); var Promise = require('../utils/promise'); +var pathUtil = require('../utils/path'); var PluginsManager = require('../plugins'); var TemplateEngine = require('../template'); var gitbook = require('../gitbook'); @@ -30,6 +31,9 @@ function Output(book) { this.ignore = Ignore(); } +// Default extension for output +Output.prototype.defaultExtension = '.html'; + // Start the generation, for a parsed book Output.prototype.generate = function() { var that = this; @@ -126,7 +130,7 @@ Output.prototype.finish = function() { // Resolve an HTML link Output.prototype.onRelativeLink = function(currentPage, href) { var to = this.book.getPage(href); - if (to) return to.outputPath(); + if (to) return this.outputPath(to.path); return href; }; @@ -166,4 +170,23 @@ Output.prototype.getPageContext = function(page) { ); }; + +// Filename for output +// READMEs are replaced by index.html +Output.prototype.outputPath = function(filename, ext) { + ext = ext || this.defaultExtension; + var output; + + if ( + path.basename(filename, path.extname(filename)) == 'README' || + output == this.book.readme.path + ) { + output = path.join(path.dirname(output), 'index'+ext); + } else { + output = pathUtil.setExtension(output, ext); + } + + return output; +}; + module.exports = Output; diff --git a/lib/output/website.js b/lib/output/website.js index 41395e6..e25240c 100644 --- a/lib/output/website.js +++ b/lib/output/website.js @@ -63,6 +63,23 @@ WebsiteOutput.prototype.prepare = function() { .value(); that.env = new nunjucks.Environment(new nunjucks.FileSystemLoader(searchPaths)); + + that.env.addGlobal('__', function(s) { + // todo: i18n + return s; + }); + + // Transform an absolute path into a relative path + // using this.ctx.page.path + that.env.addFilter('resolveFile', function(s) { + // todo + return s; + }); + + // Transform a '.md' into a '.html' (README -> index) + that.env.addFilter('contentURL', function(s) { + return that.outputPath(s); + }); }); }; @@ -76,7 +93,7 @@ WebsiteOutput.prototype.onPage = function(page) { // Write the HTML file .then(function(html) { return that.writeFile( - page.withExtension('.html'), + that.outputPath(page.path), html ); }); |