diff options
-rw-r--r-- | lib/api/encodeGlobal.js | 11 | ||||
-rw-r--r-- | lib/models/templateBlock.js | 4 |
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); } |