Add preventIndent option for partials

This disables the standalone partial indent behavior required by the Mustache spec and allows for users to utilize partials in the same manner as under 1.x.

Fixes #858
This commit is contained in:
kpdecker
2014-11-02 12:19:56 -06:00
parent 7c220b9af5
commit 632fadcea3
3 changed files with 15 additions and 2 deletions
+6 -1
View File
@@ -179,7 +179,12 @@ Compiler.prototype = {
this.opcode('pushContext');
}
this.opcode('invokePartial', partialName.name, partial.indent || '');
var indent = partial.indent || '';
if (this.options.preventIndent && indent) {
this.opcode('appendContent', indent);
indent = '';
}
this.opcode('invokePartial', partialName.name, indent);
this.opcode('append');
},
+1 -1
View File
@@ -18,7 +18,7 @@ global.compileWithPartials = function(string, hashOrArray, partials) {
ary = [];
ary.push(hashOrArray[0]);
ary.push({ helpers: hashOrArray[1], partials: hashOrArray[2] });
options = {compat: hashOrArray[3]};
options = typeof hashOrArray[3] === 'object' ? hashOrArray[3] : {compat: hashOrArray[3]};
if (hashOrArray[4] != null) {
options.data = !!hashOrArray[4];
ary[1].data = hashOrArray[4];
+8
View File
@@ -167,6 +167,14 @@ describe('partials', function() {
shouldCompileToWithPartials(string, [hash, {}, {dude: dude, url: url}], true,
"Dudes:\n Yehuda\n http://yehuda!\n Alan\n http://alan!\n");
});
it("prevent nested indented partials", function() {
var string = "Dudes:\n{{#dudes}}\n {{>dude}}\n{{/dudes}}";
var dude = "{{name}}\n {{> url}}";
var url = "{{url}}!\n";
var hash = {dudes: [{name: "Yehuda", url: "http://yehuda"}, {name: "Alan", url: "http://alan"}]};
shouldCompileToWithPartials(string, [hash, {}, {dude: dude, url: url}, {preventIndent: true}], true,
"Dudes:\n Yehuda\n http://yehuda!\n Alan\n http://alan!\n");
});
});
describe('compat mode', function() {