diff options
author | Kevin Decker <kpdecker@gmail.com> | 2014-11-08 17:47:25 -0600 |
---|---|---|
committer | Kevin Decker <kpdecker@gmail.com> | 2014-11-08 17:47:25 -0600 |
commit | e779ecf12dade0aba530610b37dc28a57d946c9d (patch) | |
tree | 478023b34939cc270e62519e4f3e6aeb51da7a34 | |
parent | c8af90f697c48d41e65fe84d5496e4cc0b31f74a (diff) | |
parent | 01a22e61df48eb512ba5dc0316855c1a8dd25956 (diff) | |
download | handlebars.js-e779ecf12dade0aba530610b37dc28a57d946c9d.zip handlebars.js-e779ecf12dade0aba530610b37dc28a57d946c9d.tar.gz handlebars.js-e779ecf12dade0aba530610b37dc28a57d946c9d.tar.bz2 |
Merge pull request #890 from wycats/to-html-safe
Use toHTML vs. instanceof checks for SafeString
-rw-r--r-- | lib/handlebars/safe-string.js | 2 | ||||
-rw-r--r-- | lib/handlebars/utils.js | 4 | ||||
-rw-r--r-- | spec/utils.js | 6 |
3 files changed, 9 insertions, 3 deletions
diff --git a/lib/handlebars/safe-string.js b/lib/handlebars/safe-string.js index 2ae49aa..a6b8ecf 100644 --- a/lib/handlebars/safe-string.js +++ b/lib/handlebars/safe-string.js @@ -3,7 +3,7 @@ function SafeString(string) { this.string = string; } -SafeString.prototype.toString = function() { +SafeString.prototype.toString = SafeString.prototype.toHTML = function() { return "" + this.string; }; diff --git a/lib/handlebars/utils.js b/lib/handlebars/utils.js index f38b7af..ce85077 100644 --- a/lib/handlebars/utils.js +++ b/lib/handlebars/utils.js @@ -53,8 +53,8 @@ export var isArray = Array.isArray || function(value) { export function escapeExpression(string) { // don't escape SafeStrings, since they're already safe - if (string instanceof SafeString) { - return string.toString(); + if (string && string.toHTML) { + return string.toHTML(); } else if (string == null) { return ""; } else if (!string) { diff --git a/spec/utils.js b/spec/utils.js index 0216c8d..4582e24 100644 --- a/spec/utils.js +++ b/spec/utils.js @@ -25,6 +25,12 @@ describe('utils', function() { var string = new Handlebars.SafeString('foo<&"\'>'); equals(Handlebars.Utils.escapeExpression(string), 'foo<&"\'>'); + var obj = { + toHTML: function() { + return 'foo<&"\'>'; + } + }; + equals(Handlebars.Utils.escapeExpression(obj), 'foo<&"\'>'); }); it('should handle falsy', function() { equals(Handlebars.Utils.escapeExpression(''), ''); |