Fix `Template#evaluate` "eating" previous character if `null` was returned from `toTemplateReplacements` function.
This commit is contained in:
parent
d655665fb6
commit
b2492aeec4
|
@ -1,3 +1,5 @@
|
|||
* Fix `Template#evaluate` "eating" previous character if `null` was returned from `toTemplateReplacements` function. (Nir, Jürgen Hörmann, kangax)
|
||||
|
||||
* Make sure (deficient) APPLET, OBJECT and EMBED elements are extended with simulated methods in IE8. Return early if `_extendedByPrototype` is present on an element. (Tobie Langel, kangax)
|
||||
|
||||
* Replace array creation and `Array#include` with a more efficient `RegExp#test`. (kangax)
|
||||
|
|
|
@ -124,11 +124,11 @@ var Template = Class.create({
|
|||
* with symbols replaced by `object`’s corresponding properties.
|
||||
**/
|
||||
evaluate: function(object) {
|
||||
if (Object.isFunction(object.toTemplateReplacements))
|
||||
if (object && Object.isFunction(object.toTemplateReplacements))
|
||||
object = object.toTemplateReplacements();
|
||||
|
||||
return this.template.gsub(this.pattern, function(match) {
|
||||
if (object == null) return '';
|
||||
if (object == null) return (match[1] + '');
|
||||
|
||||
var before = match[1] || '';
|
||||
if (before == '\\') return match[2];
|
||||
|
|
|
@ -342,6 +342,12 @@ new Test.Unit.Runner({
|
|||
toTemplateReplacements: function() { return { name: this.name, job: this.getJob() } }
|
||||
};
|
||||
this.assertEqual('My name is Stephan, my job is Web developer', new Template(source).evaluate(subject));
|
||||
|
||||
var strActual = new Template('foo #{bar} baz').evaluate({
|
||||
toTemplateReplacements: function(){ return null; }
|
||||
});
|
||||
this.assertIdentical('foo baz', strActual);
|
||||
this.assertIdentical('foo', new Template('foo#{bar}').evaluate(null));
|
||||
},
|
||||
|
||||
testTemplateEvaluationCombined: function() {
|
||||
|
|
Loading…
Reference in New Issue