diff options
Diffstat (limited to 'lib/output/website/createTemplateEngine.js')
-rw-r--r-- | lib/output/website/createTemplateEngine.js | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/lib/output/website/createTemplateEngine.js b/lib/output/website/createTemplateEngine.js index 06e9192..2c2ac8d 100644 --- a/lib/output/website/createTemplateEngine.js +++ b/lib/output/website/createTemplateEngine.js @@ -2,18 +2,19 @@ var path = require('path'); var nunjucks = require('nunjucks'); var DoExtension = require('nunjucks-do')(nunjucks); -var TEMPLATES_FOLDER = require('../../constants/templatesFolder'); - -var Templating = require('../../templating'); +var JSONUtils = require('../../json'); +var LocationUtils = require('../../utils/location'); var TemplateEngine = require('../../models/templateEngine'); +var templatesFolder = require('../../constants/templatesFolder'); var defaultFilters = require('../../constants/defaultFilters'); +var Templating = require('../../templating'); var listSearchPaths = require('./listSearchPaths'); /** Directory for a theme with the templates */ function templateFolder(dir) { - return path.join(dir, TEMPLATES_FOLDER); + return path.join(dir, templatesFolder); } /** @@ -28,6 +29,7 @@ function createTemplateEngine(output, currentFile) { var state = output.getState(); var i18n = state.getI18n(); var config = book.getConfig(); + var summary = book.getSummary(); // Search paths for templates var searchPaths = listSearchPaths(output); @@ -43,11 +45,28 @@ function createTemplateEngine(output, currentFile) { loader: loader, filters: defaultFilters.merge({ - t: function(s) { + /** + Translate a sentence + */ + t: function t(s) { return i18n.t(language, s); }, + + /** + Resolve an absolute file path into a + relative path + */ resolveFile: function(s) { - return s; + // Convert /test.png -> test.png + s = LocationUtils.toAbsolute(s, '', ''); + + // Convert to relative + s = LocationUtils.relative( + this.resolve('.') + '/', + this.book.resolve(name) + ); + + return LocationUtils.normalize(s); }, resolveAsset: function(s) { return s; @@ -58,8 +77,14 @@ function createTemplateEngine(output, currentFile) { contentURL: function(s) { return s; }, + + /** + Return an article by its path + */ getArticleByPath: function(s) { - return undefined; + var article = summary.getByPath(s); + if (!article) return undefined; + return JSONUtils.encodeSummaryArticle(article); } }), |