summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/api/encodeGlobal.js11
-rw-r--r--lib/models/templateBlock.js4
2 files changed, 10 insertions, 5 deletions
diff --git a/lib/api/encodeGlobal.js b/lib/api/encodeGlobal.js
index 6c3fda3..e8f7156 100644
--- a/lib/api/encodeGlobal.js
+++ b/lib/api/encodeGlobal.js
@@ -2,10 +2,12 @@ var Promise = require('../utils/promise');
var PathUtils = require('../utils/path');
var fs = require('../utils/fs');
+var Plugins = require('../plugins');
var deprecate = require('./deprecate');
var encodeConfig = require('./encodeConfig');
var encodeNavigation = require('./encodeNavigation');
var fileToURL = require('../output/helper/fileToURL');
+var defaultBlocks = require('../constants/defaultBlocks');
/**
Encode a global context into a JS object
@@ -19,6 +21,8 @@ function encodeGlobal(output) {
var bookFS = book.getContentFS();
var logger = output.getLogger();
var outputFolder = output.getRoot();
+ var plugins = output.getPlugins();
+ var blocks = Plugins.listBlocks(plugins);
var result = {
log: logger,
@@ -61,11 +65,12 @@ function encodeGlobal(output) {
Apply a templating block and returns its result
@param {String} name
- @param {Object} block
+ @param {Object} blockData
@return {Promise|Object}
*/
- applyBlock: function(name, block) {
- // todo
+ applyBlock: function(name, blockData) {
+ var block = blocks.get(name) || defaultBlocks.get(name);
+ return Promise(block.applyBlock(blockData, result));
}
},
diff --git a/lib/models/templateBlock.js b/lib/models/templateBlock.js
index 4e47da7..340f808 100644
--- a/lib/models/templateBlock.js
+++ b/lib/models/templateBlock.js
@@ -187,7 +187,7 @@ TemplateBlock.prototype.toNunjucksExt = function(mainContext) {
})
.nodeify(callback);
};
- };
+ }
return Ext;
};
@@ -209,7 +209,7 @@ TemplateBlock.prototype.applyBlock = function(inner, context) {
var r = processFn.call(context, inner);
if (Promise.isPromiseAlike(r)) {
- return r.then(this.handleBlockResult);
+ return r.then(this.handleBlockResult.bind(this));
} else {
return this.handleBlockResult(r);
}