Skip to content

Commit 45d9375

Browse files
authored
Merge pull request #1129 from HubSpot/legacy-override-for-whitespace-control
Handle trailing note without end
2 parents eca33f8 + 385c9dc commit 45d9375

File tree

2 files changed

+67
-3
lines changed

2 files changed

+67
-3
lines changed

src/main/java/com/hubspot/jinjava/tree/parse/NoteToken.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
**********************************************************************/
1616
package com.hubspot.jinjava.tree.parse;
1717

18-
import org.apache.commons.lang3.StringUtils;
19-
2018
public class NoteToken extends Token {
2119
private static final long serialVersionUID = -3859011447900311329L;
2220

@@ -39,7 +37,7 @@ public int getType() {
3937
*/
4038
@Override
4139
protected void parse() {
42-
if (StringUtils.isNotEmpty(image)) {
40+
if (image.length() > 4) { // {# #}
4341
handleTrim(image.substring(2, image.length() - 2));
4442
}
4543
content = "";

src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,72 @@ public void itTrimsNotes() {
247247
assertThat(interpreter.render(newTree)).isEqualTo("AB");
248248
}
249249

250+
@Test
251+
public void itAllowsTrailingNote() {
252+
String expression = "A\n{# ";
253+
final Node tree = new TreeParser(interpreter, expression).buildTree();
254+
assertThat(interpreter.render(tree)).isEqualTo("A\n");
255+
interpreter =
256+
new Jinjava(
257+
JinjavaConfig
258+
.newBuilder()
259+
.withLegacyOverrides(
260+
LegacyOverrides
261+
.newBuilder()
262+
.withUseTrimmingForNotesAndExpressions(true)
263+
.build()
264+
)
265+
.build()
266+
)
267+
.newInterpreter();
268+
final Node newTree = new TreeParser(interpreter, expression).buildTree();
269+
assertThat(interpreter.render(newTree)).isEqualTo("A\n");
270+
}
271+
272+
@Test
273+
public void itAllowsTrailingExpression() {
274+
String expression = "A\n{{ ";
275+
final Node tree = new TreeParser(interpreter, expression).buildTree();
276+
assertThat(interpreter.render(tree)).isEqualTo("A\n{{ ");
277+
interpreter =
278+
new Jinjava(
279+
JinjavaConfig
280+
.newBuilder()
281+
.withLegacyOverrides(
282+
LegacyOverrides
283+
.newBuilder()
284+
.withUseTrimmingForNotesAndExpressions(true)
285+
.build()
286+
)
287+
.build()
288+
)
289+
.newInterpreter();
290+
final Node newTree = new TreeParser(interpreter, expression).buildTree();
291+
assertThat(interpreter.render(newTree)).isEqualTo("A\n{{ ");
292+
}
293+
294+
@Test
295+
public void itAllowsTrailingTag() {
296+
String expression = "A\n{% ";
297+
final Node tree = new TreeParser(interpreter, expression).buildTree();
298+
assertThat(interpreter.render(tree)).isEqualTo("A\n{% ");
299+
interpreter =
300+
new Jinjava(
301+
JinjavaConfig
302+
.newBuilder()
303+
.withLegacyOverrides(
304+
LegacyOverrides
305+
.newBuilder()
306+
.withUseTrimmingForNotesAndExpressions(true)
307+
.build()
308+
)
309+
.build()
310+
)
311+
.newInterpreter();
312+
final Node newTree = new TreeParser(interpreter, expression).buildTree();
313+
assertThat(interpreter.render(newTree)).isEqualTo("A\n{% ");
314+
}
315+
250316
@Test
251317
public void itMergesTextNodesWhileRespectingTrim() {
252318
String expression = "{% print 'A' -%}\n{#- note -#}\nB\n{%- print 'C' %}";

0 commit comments

Comments
 (0)