diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-04-29 17:34:33 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2016-04-29 17:34:33 +0200 |
commit | a5eec818197b434506da5d6fa61b37d21c4709f4 (patch) | |
tree | 78e671d396bb9e54a32ac170573b8a83994f773f | |
parent | 98f70879bde88d32e898ff057f4dc7ceaff7e25e (diff) | |
download | gitbook-a5eec818197b434506da5d6fa61b37d21c4709f4.zip gitbook-a5eec818197b434506da5d6fa61b37d21c4709f4.tar.gz gitbook-a5eec818197b434506da5d6fa61b37d21c4709f4.tar.bz2 |
Fix context for page template
-rw-r--r-- | lib/json/encodeBook.js | 13 | ||||
-rw-r--r-- | lib/models/config.js | 8 | ||||
-rw-r--r-- | lib/output/ebook/getConvertOptions.js | 2 | ||||
-rw-r--r-- | lib/output/generatePage.js | 4 | ||||
-rw-r--r-- | lib/output/website/onPage.js | 1 |
5 files changed, 22 insertions, 6 deletions
diff --git a/lib/json/encodeBook.js b/lib/json/encodeBook.js index ba19999..c134312 100644 --- a/lib/json/encodeBook.js +++ b/lib/json/encodeBook.js @@ -1,5 +1,6 @@ -var gitbook = require('../gitbook'); +var extend = require('extend'); +var gitbook = require('../gitbook'); var encodeSummary = require('./encodeSummary'); var encodeGlossary = require('./encodeGlossary'); var encodeReadme = require('./encodeReadme'); @@ -11,6 +12,11 @@ var encodeReadme = require('./encodeReadme'); @return {Object} */ function encodeBookToJson(book) { + var config = book.getConfig(); + var language = book.getLanguage(); + + var variables = config.getValue('variables', {}); + return { summary: encodeSummary(book.getSummary()), glossary: encodeGlossary(book.getGlossary()), @@ -19,7 +25,10 @@ function encodeBookToJson(book) { gitbook: { version: gitbook.version, time: gitbook.START_TIME - } + }, + book: extend({ + language: language? language : undefined + }, variables) }; } diff --git a/lib/models/config.js b/lib/models/config.js index 547007a..663f4aa 100644 --- a/lib/models/config.js +++ b/lib/models/config.js @@ -31,7 +31,13 @@ Config.prototype.getValue = function(keyPath, def) { return def; } - return values.getIn(keyPath); + var value = values.getIn(keyPath); + + if (Immutable.Iterable.isIterable(value)) { + value = value.toJS(); + } + + return value }; /** diff --git a/lib/output/ebook/getConvertOptions.js b/lib/output/ebook/getConvertOptions.js index bc80493..75be364 100644 --- a/lib/output/ebook/getConvertOptions.js +++ b/lib/output/ebook/getConvertOptions.js @@ -48,7 +48,7 @@ function getConvertOptions(output) { getPDFTemplate(output, 'footer') ]) .spread(function(headerTpl, footerTpl) { - var pdfOptions = config.getValue('pdf').toJS(); + var pdfOptions = config.getValue('pdf'); return options = extend(options, { '--chapter-mark': String(pdfOptions.chapterMark), diff --git a/lib/output/generatePage.js b/lib/output/generatePage.js index aa3b376..30a798a 100644 --- a/lib/output/generatePage.js +++ b/lib/output/generatePage.js @@ -3,6 +3,7 @@ var error = require('../utils/error'); var Parse = require('../parse'); var Templating = require('../templating'); +var JSONUtils = require('../json'); var createTemplateEngine = require('./createTemplateEngine'); var callPageHook = require('./callPageHook'); @@ -22,6 +23,7 @@ function generatePage(output, page) { var file = resultPage.getFile(); var filePath = file.getPath(); var parser = file.getParser(); + var context = JSONUtils.encodeBookWithPage(book, resultPage); if (!parser) { return Promise.reject(error.FileNotParsableError({ @@ -39,7 +41,7 @@ function generatePage(output, page) { // Render templating syntax .then(function(content) { - return Templating.render(engine, filePath, content); + return Templating.render(engine, filePath, content, context); }) // Render page using parser (markdown -> HTML) diff --git a/lib/output/website/onPage.js b/lib/output/website/onPage.js index 1e9a131..dcdd95a 100644 --- a/lib/output/website/onPage.js +++ b/lib/output/website/onPage.js @@ -22,7 +22,6 @@ function onPage(output, page) { var file = page.getFile(); var prefix = options.get('prefix'); var book = output.getBook(); - var config = book.getConfig(); var plugins = output.getPlugins(); var engine = createTemplateEngine(output, page.getPath()); |