summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2013-04-06 16:42:24 -0500
committerkpdecker <kpdecker@gmail.com>2013-04-06 16:42:24 -0500
commit4d66d0c0a688206c1b637b9d02da4a77eb5d1f71 (patch)
tree70bec45bde4402a588f4c69e12f690d93161e042
parentbee0facaca63d0ce0775be2e1c679c0d28fec949 (diff)
downloadhandlebars.js-4d66d0c0a688206c1b637b9d02da4a77eb5d1f71.zip
handlebars.js-4d66d0c0a688206c1b637b9d02da4a77eb5d1f71.tar.gz
handlebars.js-4d66d0c0a688206c1b637b9d02da4a77eb5d1f71.tar.bz2
Escape unicode newlines in string literals
Fixes #375
-rw-r--r--dist/handlebars.js4
-rw-r--r--lib/handlebars/compiler/compiler.js4
-rw-r--r--spec/qunit_spec.js4
3 files changed, 10 insertions, 2 deletions
diff --git a/dist/handlebars.js b/dist/handlebars.js
index afdb0b9..d7f140e 100644
--- a/dist/handlebars.js
+++ b/dist/handlebars.js
@@ -1971,7 +1971,9 @@ JavaScriptCompiler.prototype = {
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r') + '"';
+ .replace(/\r/g, '\\r')
+ .replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
+ .replace(/\u2029/g, '\\u2029') + '"';
},
setupHelper: function(paramSize, name, missingParams) {
diff --git a/lib/handlebars/compiler/compiler.js b/lib/handlebars/compiler/compiler.js
index 196ba18..b028076 100644
--- a/lib/handlebars/compiler/compiler.js
+++ b/lib/handlebars/compiler/compiler.js
@@ -1130,7 +1130,9 @@ JavaScriptCompiler.prototype = {
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r') + '"';
+ .replace(/\r/g, '\\r')
+ .replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
+ .replace(/\u2029/g, '\\u2029') + '"';
},
setupHelper: function(paramSize, name, missingParams) {
diff --git a/spec/qunit_spec.js b/spec/qunit_spec.js
index 9832d60..6c44e4e 100644
--- a/spec/qunit_spec.js
+++ b/spec/qunit_spec.js
@@ -1408,6 +1408,10 @@ test('GH-458: Scoped this identifier', function() {
shouldCompileTo('{{./foo}}', {foo: 'bar'}, 'bar');
});
+test('GH-375: Unicode line terminators', function() {
+ shouldCompileTo('\u2028', {}, '\u2028');
+});
+
suite('Utils');
test('escapeExpression', function() {