summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Decker <kpdecker@gmail.com>2014-11-08 17:47:25 -0600
committerKevin Decker <kpdecker@gmail.com>2014-11-08 17:47:25 -0600
commite779ecf12dade0aba530610b37dc28a57d946c9d (patch)
tree478023b34939cc270e62519e4f3e6aeb51da7a34
parentc8af90f697c48d41e65fe84d5496e4cc0b31f74a (diff)
parent01a22e61df48eb512ba5dc0316855c1a8dd25956 (diff)
downloadhandlebars.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.js2
-rw-r--r--lib/handlebars/utils.js4
-rw-r--r--spec/utils.js6
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(''), '');