summaryrefslogtreecommitdiffstats
path: root/lib/output/website/createTemplateEngine.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/output/website/createTemplateEngine.js')
-rw-r--r--lib/output/website/createTemplateEngine.js39
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);
}
}),