diff options
author | Samy Pesse <samypesse@gmail.com> | 2016-05-05 11:00:05 +0200 |
---|---|---|
committer | Samy Pesse <samypesse@gmail.com> | 2016-05-05 11:00:05 +0200 |
commit | 34947b5e207e84ef43a8194c0ec7bac19dccf709 (patch) | |
tree | 06e687700d95590cae678f8bef381e8a62dc0129 /lib/templating/render.js | |
parent | c621380b664bcbef087df571b662e7a34e098168 (diff) | |
download | gitbook-34947b5e207e84ef43a8194c0ec7bac19dccf709.zip gitbook-34947b5e207e84ef43a8194c0ec7bac19dccf709.tar.gz gitbook-34947b5e207e84ef43a8194c0ec7bac19dccf709.tar.bz2 |
Add mode TemplateOutput to represent {content + blocks} from template
Diffstat (limited to 'lib/templating/render.js')
-rw-r--r-- | lib/templating/render.js | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/templating/render.js b/lib/templating/render.js index 22c0dc4..584890a 100644 --- a/lib/templating/render.js +++ b/lib/templating/render.js @@ -1,6 +1,6 @@ var Promise = require('../utils/promise'); var timing = require('../utils/timing'); - +var TemplateOutput = require('../models/templateOutput'); var replaceShortcuts = require('./replaceShortcuts'); /** @@ -10,16 +10,23 @@ var replaceShortcuts = require('./replaceShortcuts'); @param {String} filePath @param {String} content @param {Object} context - @return {Promise<String>} + @return {Promise<TemplateOutput>} */ function renderTemplate(engine, filePath, content, context) { context = context || {}; - var env = engine.toNunjucks(); + // Mutable objects to contains all blocks requiring post-processing + var blocks = {}; + + // Create nunjucks environment + var env = engine.toNunjucks(blocks); + + // Replace shortcuts from plugin's blocks content = replaceShortcuts(engine, filePath, content); return timing.measure( 'template.render', + Promise.nfcall( env.renderString.bind(env), content, @@ -28,6 +35,9 @@ function renderTemplate(engine, filePath, content, context) { path: filePath } ) + .then(function(content) { + return TemplateOutput.create(content, blocks); + }) ); } |