summaryrefslogtreecommitdiffstats
path: root/lib/template.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-10-20 16:38:48 +0200
committerSamy Pessé <samypesse@gmail.com>2015-10-20 16:38:48 +0200
commit991681daa2357b8649e40ae9f04e58c88ba0d23f (patch)
treea245373d41ec79c7807c9fa84757b8ccc7ede2a9 /lib/template.js
parent2faf53e16b3e0e401264af214ea6614f9b46103d (diff)
downloadgitbook-991681daa2357b8649e40ae9f04e58c88ba0d23f.zip
gitbook-991681daa2357b8649e40ae9f04e58c88ba0d23f.tar.gz
gitbook-991681daa2357b8649e40ae9f04e58c88ba0d23f.tar.bz2
Add failing test for #982
Diffstat (limited to 'lib/template.js')
-rw-r--r--lib/template.js64
1 files changed, 33 insertions, 31 deletions
diff --git a/lib/template.js b/lib/template.js
index d9d3a2f..9f32515 100644
--- a/lib/template.js
+++ b/lib/template.js
@@ -1,12 +1,12 @@
-var _ = require("lodash");
-var Q = require("q");
-var nunjucks = require("nunjucks");
-var escapeStringRegexp = require("escape-string-regexp");
+var _ = require('lodash');
+var Q = require('q');
+var nunjucks = require('nunjucks');
+var escapeStringRegexp = require('escape-string-regexp');
-var batch = require("./utils/batch");
-var pkg = require("../package.json");
-var defaultBlocks = require("./blocks");
-var BookLoader = require("./conrefs_loader");
+var batch = require('./utils/batch');
+var pkg = require('../package.json');
+var defaultBlocks = require('./blocks');
+var BookLoader = require('./conrefs_loader');
// Normalize result from a block
function normBlockResult(blk) {
@@ -28,12 +28,12 @@ var TemplateEngine = function(book) {
// Tags
tags: {
- blockStart: "{%",
- blockEnd: "%}",
- variableStart: "{{",
- variableEnd: "}}",
- commentStart: "{###",
- commentEnd: "###}"
+ blockStart: '{%',
+ blockEnd: '%}',
+ variableStart: '{{',
+ variableEnd: '}}',
+ commentStart: '{###',
+ commentEnd: '###}'
}
}
);
@@ -60,7 +60,7 @@ TemplateEngine.prototype.processBlock = function(blk) {
parse: false,
post: undefined
});
- blk.id = _.uniqueId("blk");
+ blk.id = _.uniqueId('blk');
var toAdd = (!blk.parse) || (blk.post !== undefined);
@@ -73,7 +73,7 @@ TemplateEngine.prototype.processBlock = function(blk) {
}
// Return it as a position marker
- return "@%@"+blk.id+"@%@";
+ return '@%@'+blk.id+'@%@';
};
// Replace position markers of blocks by body after processing
@@ -110,11 +110,13 @@ TemplateEngine.prototype.bindContext = function(func) {
TemplateEngine.prototype.addFilter = function(filterName, func) {
try {
this.env.getFilter(filterName);
- this.log.warn.ln("conflict in filters, \""+filterName+"\" is already set");
+ this.log.warn.ln('conflict in filters, \''+filterName+'\' is already set');
return false;
- } catch(e) {}
+ } catch(e) {
+ // Filter doesn't exist
+ }
- this.log.debug.ln("add filter \""+filterName+"\"");
+ this.log.debug.ln('add filter \''+filterName+'\'');
this.env.addFilter(filterName, this.bindContext(function() {
var ctx = this;
var args = Array.prototype.slice.apply(arguments);
@@ -138,7 +140,7 @@ TemplateEngine.prototype.addFilters = function(filters) {
// Return nunjucks extension name of a block
TemplateEngine.prototype.blockExtName = function(name) {
- return "Block"+name+"Extension";
+ return 'Block'+name+'Extension';
};
// Test if a block is defined
@@ -167,7 +169,7 @@ TemplateEngine.prototype.addBlock = function(name, block) {
block = _.defaults(block || {}, {
shortcuts: [],
- end: "end"+name,
+ end: 'end'+name,
process: _.identity,
blocks: []
});
@@ -175,13 +177,13 @@ TemplateEngine.prototype.addBlock = function(name, block) {
extName = this.blockExtName(name);
if (this.hasBlock(name) && !defaultBlocks[name]) {
- this.log.warn.ln("conflict in blocks, \""+name+"\" is already defined");
+ this.log.warn.ln('conflict in blocks, \''+name+'\' is already defined');
}
// Cleanup previous block
this.removeBlock(name);
- this.log.debug.ln("add block \""+name+"\"");
+ this.log.debug.ln('add block \''+name+'\'');
this.blocks[name] = block;
Ext = function () {
@@ -238,7 +240,7 @@ TemplateEngine.prototype.addBlock = function(name, block) {
bodies.push(subbodies[blockName][0].body);
});
- return new nodes.CallExtensionAsync(this, "run", args, bodies);
+ return new nodes.CallExtensionAsync(this, 'run', args, bodies);
};
this.run = function(context) {
@@ -287,7 +289,7 @@ TemplateEngine.prototype.addBlock = function(name, block) {
// Add shortcuts
if (!_.isArray(block.shortcuts)) block.shortcuts = [block.shortcuts];
_.each(block.shortcuts, function(shortcut) {
- this.log.debug.ln("add template shortcut from \""+shortcut.start+"\" to block \""+name+"\" for parsers ", shortcut.parsers);
+ this.log.debug.ln('add template shortcut from \''+shortcut.start+'\' to block \''+name+'\' for parsers ', shortcut.parsers);
this.shortcuts.push({
block: name,
parsers: shortcut.parsers,
@@ -314,7 +316,7 @@ TemplateEngine.prototype.applyBlock = function(name, blk, ctx) {
var func, block, r;
block = this.blocks[name];
- if (!block) throw new Error("Block not found \""+name+"\"");
+ if (!block) throw new Error('Block not found \''+name+'\'');
if (_.isString(blk)) {
blk = {
body: blk
@@ -339,11 +341,11 @@ TemplateEngine.prototype.applyBlock = function(name, blk, ctx) {
TemplateEngine.prototype._applyShortcut = function(parser, content, shortcut) {
if (!_.contains(shortcut.parsers, parser)) return content;
var regex = new RegExp(
- escapeStringRegexp(shortcut.start) + "([\\s\\S]*?[^\\$])" + escapeStringRegexp(shortcut.end),
- "g"
+ escapeStringRegexp(shortcut.start) + '([\\s\\S]*?[^\\$])' + escapeStringRegexp(shortcut.end),
+ 'g'
);
return content.replace(regex, function(all, match) {
- return "{% "+shortcut.tag.start+" %}"+ match + "{% "+shortcut.tag.end+" %}";
+ return '{% '+shortcut.tag.start+' %}'+ match + '{% '+shortcut.tag.end+' %}';
});
};
@@ -374,7 +376,7 @@ TemplateEngine.prototype.renderString = function(content, context, options) {
return Q.nfcall(this.env.renderString.bind(this.env), content, context, options)
.fail(function(err) {
if (_.isString(err)) err = new Error(err);
- err.message = err.message.replace(/^Error: /, "");
+ err.message = err.message.replace(/^Error: /, '');
throw err;
});
@@ -398,7 +400,7 @@ TemplateEngine.prototype.renderPage = function(page) {
return that.book.statFile(page.path)
.then(function(stat) {
- var context = {
+ var context = {
// infos about the file
file: {
path: page.path,