From 441c3d6fa947afdf85aa920d15789e75d7b7db0f Mon Sep 17 00:00:00 2001 From: Joel Nothman Date: Mon, 27 Jan 2025 08:16:54 +1100 Subject: [PATCH] Fix issue #1230 with lstrip blocks --- .../java/com/hubspot/jinjava/tree/TreeParser.java | 11 ++++++++++- .../java/com/hubspot/jinjava/tree/TreeParserTest.java | 2 +- .../resources/parse/tokenizer/whitespace-tags.jinja | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) 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 %}