From 783a1d550bd06802a11f1f3e5c7798c6e7a9c108 Mon Sep 17 00:00:00 2001 From: Jakob Linskeseder Date: Fri, 4 Aug 2023 01:01:46 +0200 Subject: [PATCH] Coerce `noEscape`-statements to a string Fixes #1838 --- lib/handlebars/compiler/javascript-compiler.js | 2 +- spec/javascript-compiler.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/handlebars/compiler/javascript-compiler.js b/lib/handlebars/compiler/javascript-compiler.js index 7762412ef..f0986c6ba 100644 --- a/lib/handlebars/compiler/javascript-compiler.js +++ b/lib/handlebars/compiler/javascript-compiler.js @@ -426,7 +426,7 @@ JavaScriptCompiler.prototype = { if (this.isInline()) { this.replaceStack(current => [' != null ? ', current, ' : ""']); - this.pushSource(this.appendToBuffer(this.popStack())); + this.pushSource(this.appendToBuffer([this.popStack(), '+', "''"])); } else { let local = this.popStack(); this.pushSource([ diff --git a/spec/javascript-compiler.js b/spec/javascript-compiler.js index ed2dc8c56..f3191aa04 100644 --- a/spec/javascript-compiler.js +++ b/spec/javascript-compiler.js @@ -34,6 +34,7 @@ describe('javascript-compiler api', function() { .toCompileTo('food'); }); }); + describe('#compilerInfo', function() { var $superCheck, $superInfo; beforeEach(function() { @@ -58,6 +59,7 @@ describe('javascript-compiler api', function() { .toCompileTo('food '); }); }); + describe('buffer', function() { var $superAppend, $superCreate; beforeEach(function() { @@ -116,4 +118,13 @@ describe('javascript-compiler api', function() { }); }); }); + + describe('options', function() { + it('should append `noEscape` statements as string', function() { + expectTemplate('{{a}}{{b}}') + .withCompileOptions({ noEscape: true }) + .withInput({ a: 1, b: 1 }) + .toCompileTo('11'); + }); + }); });