diff --git a/src/main/java/com/hubspot/jinjava/tree/TreeParser.java b/src/main/java/com/hubspot/jinjava/tree/TreeParser.java index 9904e7c7a..591a73801 100644 --- a/src/main/java/com/hubspot/jinjava/tree/TreeParser.java +++ b/src/main/java/com/hubspot/jinjava/tree/TreeParser.java @@ -173,9 +173,18 @@ private Node text(TextToken textToken) { if (scanner.hasNext()) { final int nextTokenType = scanner.peek().getType(); if (nextTokenType == symbols.getTag() || nextTokenType == symbols.getNote()) { + String content = textToken.getImage(); + int lastNewline = content.lastIndexOf('\n'); + String afterNewline = lastNewline == -1 + ? content + : content.substring(lastNewline + 1); + + if (afterNewline.matches("^[ \t]*$")) { + content = lastNewline == -1 ? "" : content.substring(0, lastNewline + 1); + } textToken = new TextToken( - StringUtils.stripEnd(textToken.getImage(), "\t "), + content, textToken.getLineNumber(), textToken.getStartPosition(), symbols diff --git a/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java b/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java index c54a33735..95373ca90 100644 --- a/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java +++ b/src/test/java/com/hubspot/jinjava/tree/TreeParserTest.java @@ -144,7 +144,7 @@ public void trimAndLstripBlocks() { .newInterpreter(); assertThat(interpreter.render(parse("parse/tokenizer/whitespace-tags.jinja"))) - .isEqualTo("
\n" + " yay\n" + "
\n"); + .isEqualTo("
\n" + " yay whoop\n" + "
\n"); } @Test diff --git a/src/test/resources/parse/tokenizer/whitespace-tags.jinja b/src/test/resources/parse/tokenizer/whitespace-tags.jinja index a1c2a489b..85565bbba 100644 --- a/src/test/resources/parse/tokenizer/whitespace-tags.jinja +++ b/src/test/resources/parse/tokenizer/whitespace-tags.jinja @@ -1,5 +1,5 @@
{% if true %} - yay + yay {% if true %}whoop{% endif %} {% endif %}