diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-04-27 12:08:00 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-04-27 12:08:00 +0200 |
commit | 4ca23b84a4ce5c7c03c72b0cb78357aaff1be27c (patch) | |
tree | 5966848cb10275d5aa93c4df2b1f208fd54ddb05 /lib/output/website | |
parent | b05eb8440b59db6d39ae06712ddda5651786e00a (diff) | |
download | gitbook-4ca23b84a4ce5c7c03c72b0cb78357aaff1be27c.zip gitbook-4ca23b84a4ce5c7c03c72b0cb78357aaff1be27c.tar.gz gitbook-4ca23b84a4ce5c7c03c72b0cb78357aaff1be27c.tar.bz2 |
Fix filters for theme templates
Diffstat (limited to 'lib/output/website')
-rw-r--r-- | lib/output/website/createTemplateEngine.js | 44 | ||||
-rw-r--r-- | lib/output/website/onPage.js | 9 |
2 files changed, 34 insertions, 19 deletions
diff --git a/lib/output/website/createTemplateEngine.js b/lib/output/website/createTemplateEngine.js index 2c2ac8d..7d87248 100644 --- a/lib/output/website/createTemplateEngine.js +++ b/lib/output/website/createTemplateEngine.js @@ -4,12 +4,17 @@ var DoExtension = require('nunjucks-do')(nunjucks); var JSONUtils = require('../../json'); var LocationUtils = require('../../utils/location'); +var fs = require('../../utils/fs'); +var PathUtils = require('../../utils/path'); var TemplateEngine = require('../../models/templateEngine'); var templatesFolder = require('../../constants/templatesFolder'); var defaultFilters = require('../../constants/defaultFilters'); var Templating = require('../../templating'); var listSearchPaths = require('./listSearchPaths'); +var fileToURL = require('../helper/fileToURL'); +var resolveFileToURL = require('../helper/resolveFileToURL'); + /** Directory for a theme with the templates */ @@ -30,6 +35,8 @@ function createTemplateEngine(output, currentFile) { var i18n = state.getI18n(); var config = book.getConfig(); var summary = book.getSummary(); + var pages = output.getPages(); + var outputFolder = output.getRoot(); // Search paths for templates var searchPaths = listSearchPaths(output); @@ -54,28 +61,31 @@ function createTemplateEngine(output, currentFile) { /** Resolve an absolute file path into a - relative path + relative path. + it also resolve pages */ - resolveFile: function(s) { - // Convert /test.png -> test.png - s = LocationUtils.toAbsolute(s, '', ''); + resolveFile: function(filePath) { + filePath = resolveFileToURL(output, filePath); + return LocationUtils.relativeForFile(currentFile, filePath); + }, - // Convert to relative - s = LocationUtils.relative( - this.resolve('.') + '/', - this.book.resolve(name) - ); + resolveAsset: function(filePath) { + filePath = LocationUtils.toAbsolute(filePath, '', ''); + filePath = path.join('gitbook', filePath); - return LocationUtils.normalize(s); + return LocationUtils.relativeForFile(currentFile, filePath); }, - resolveAsset: function(s) { - return s; - }, - fileExists: function() { - return false; + + /** + Check if a file exists + */ + fileExists: function(fileName) { + var filePath = PathUtils.resolveInRoot(outputFolder, fileName); + return fs.existsSync(filePath); }, - contentURL: function(s) { - return s; + + contentURL: function(filePath) { + return fileToURL(output, filePath); }, /** diff --git a/lib/output/website/onPage.js b/lib/output/website/onPage.js index aedb8c0..a5598e4 100644 --- a/lib/output/website/onPage.js +++ b/lib/output/website/onPage.js @@ -1,9 +1,10 @@ var Templating = require('../../templating'); var JSONUtils = require('../../json'); var Modifiers = require('../modifiers'); -var Writer = require('../writer'); +var writeFile = require('../helper/writeFile'); var getModifiers = require('../getModifiers'); var createTemplateEngine = require('./createTemplateEngine'); +var fileToOutput = require('../helper/fileToOutput'); /** Write a page as a json file @@ -13,6 +14,7 @@ var createTemplateEngine = require('./createTemplateEngine'); */ function onPage(output, page) { var options = output.getOptions(); + var file = page.getFile(); var prefix = options.get('prefix'); var engine = createTemplateEngine(output, page.getPath()); @@ -27,12 +29,15 @@ function onPage(output, page) { } }; + // Output file path + var filePath = fileToOutput(output, file.getPath()); + // Render the theme return Templating.renderFile(engine, prefix + '/page.html', context) // Write it to the disk .then(function(html) { - return Writer.writePage(output, resultPage, html); + return writeFile(output, filePath, html); }); }); } |