Skip to content

Commit a66b0ab

Browse files
committed
Make legacy merging compatible with note trimming
1 parent 3874722 commit a66b0ab

4 files changed

Lines changed: 17 additions & 6 deletions

File tree

src/main/java/com/hubspot/jinjava/tree/TreeParser.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ public Node buildTree() {
6868
!interpreter.getConfig().getLegacyOverrides().isAllowAdjacentTextNodes()
6969
) {
7070
// merge adjacent text nodes so whitespace control properly applies
71-
getLastSibling().getMaster().mergeImageAndContent(node.getMaster());
71+
((TextToken) getLastSibling().getMaster()).mergeImageAndContent(
72+
(TextToken) node.getMaster()
73+
);
7274
} else {
7375
parent.getChildren().add(node);
7476
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ public TextToken(
2929
super(image, lineNumber, startPosition, symbols);
3030
}
3131

32+
public void mergeImageAndContent(TextToken otherToken) {
33+
String thisOutput = output();
34+
String otherTokenOutput = otherToken.output();
35+
this.image = thisOutput + otherTokenOutput;
36+
this.content = image;
37+
}
38+
3239
@Override
3340
public int getType() {
3441
return getSymbols().getFixed();

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,6 @@ public String getImage() {
5353
return image;
5454
}
5555

56-
public void mergeImageAndContent(Token otherToken) {
57-
this.image = image + otherToken.image;
58-
this.content = content + otherToken.content;
59-
}
60-
6156
public int getLineNumber() {
6257
return lineNumber;
6358
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,13 @@ public void itTrimsNotes() {
232232
assertThat(interpreter.render(tree)).isEqualTo("AB");
233233
}
234234

235+
@Test
236+
public void itMergesTextNodesWhileRespectingTrim() {
237+
String expression = "{% print 'A' -%}\n{#- note -#}\nB\n{%- print 'C' %}";
238+
final Node tree = new TreeParser(interpreter, expression).buildTree();
239+
assertThat(interpreter.render(tree)).isEqualTo("ABC");
240+
}
241+
235242
@Test
236243
public void itTrimsExpressions() {
237244
String expression = "A\n{{- 'B' -}}\nC";

0 commit comments

Comments
 (0)