Skip to content

Commit 6dd04ff

Browse files
committed
LegacyOverrides.THREE_POINT_0 includes treatsEscapedQuotesSameWhenNotInQuotes
1 parent 303ccda commit 6dd04ff

3 files changed

Lines changed: 18 additions & 18 deletions

File tree

src/main/java/com/hubspot/jinjava/LegacyOverrides.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public interface LegacyOverrides extends WithLegacyOverrides {
2121
.withAllowAdjacentTextNodes(true)
2222
.withUseTrimmingForNotesAndExpressions(true)
2323
.withKeepNullableLoopValues(true)
24+
.withHandleBackslashInQuotesOnly(true)
2425
.build();
2526
LegacyOverrides ALL = new Builder()
2627
.withEvaluateMapKeys(true)

src/test/java/com/hubspot/jinjava/tree/parse/BackslashHandlingTest.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,16 @@ private static Jinjava charLegacy() {
2727
return new Jinjava(
2828
JinjavaConfig
2929
.newBuilder()
30-
.withLegacyOverrides(LegacyOverrides.newBuilder().build())
30+
.withLegacyOverrides(
31+
LegacyOverrides.newBuilder().withHandleBackslashInQuotesOnly(false).build()
32+
)
3133
.build()
3234
);
3335
}
3436

3537
/** Char-based scanner, Jinja2-compatible backslash behaviour (flag = true). */
3638
private static Jinjava charNew() {
37-
return new Jinjava(
38-
JinjavaConfig
39-
.newBuilder()
40-
.withLegacyOverrides(
41-
LegacyOverrides.newBuilder().withHandleBackslashInQuotesOnly(true).build()
42-
)
43-
.build()
44-
);
39+
return new Jinjava(JinjavaConfig.newBuilder().build());
4540
}
4641

4742
/** String-based scanner, legacy backslash behaviour (flag = false). */
@@ -50,7 +45,9 @@ private static Jinjava stringLegacy() {
5045
JinjavaConfig
5146
.newBuilder()
5247
.withTokenScannerSymbols(StringTokenScannerSymbols.builder().build())
53-
.withLegacyOverrides(LegacyOverrides.newBuilder().build())
48+
.withLegacyOverrides(
49+
LegacyOverrides.newBuilder().withHandleBackslashInQuotesOnly(false).build()
50+
)
5451
.build()
5552
);
5653
}
@@ -61,9 +58,6 @@ private static Jinjava stringNew() {
6158
JinjavaConfig
6259
.newBuilder()
6360
.withTokenScannerSymbols(StringTokenScannerSymbols.builder().build())
64-
.withLegacyOverrides(
65-
LegacyOverrides.newBuilder().withHandleBackslashInQuotesOnly(true).build()
66-
)
6761
.build()
6862
);
6963
}
@@ -216,10 +210,6 @@ public void stringNew_simpleExpressionUnchanged() {
216210

217211
// ── LegacyOverrides preset assertions ─────────────────────────────────────
218212
//
219-
// handleBackslashInQuotesOnly is an explicit opt-in only. It is NOT included
220-
// in THREE_POINT_0 or NONE because existing templates may rely on the legacy
221-
// behaviour of \} preventing delimiter recognition. Inclusion in a preset
222-
// can be reconsidered in a future major version.
223213

224214
@Test
225215
public void allPresetDoesNotEnableNewBackslashHandling() {
@@ -228,7 +218,7 @@ public void allPresetDoesNotEnableNewBackslashHandling() {
228218

229219
@Test
230220
public void threePointZeroPresetDoesNotEnableNewBackslashHandling() {
231-
assertThat(LegacyOverrides.THREE_POINT_0.isHandleBackslashInQuotesOnly()).isFalse();
221+
assertThat(LegacyOverrides.THREE_POINT_0.isHandleBackslashInQuotesOnly()).isTrue();
232222
}
233223

234224
@Test

src/test/java/com/hubspot/jinjava/tree/parse/TokenScannerTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.common.io.Resources;
99
import com.hubspot.jinjava.BaseJinjavaTest;
1010
import com.hubspot.jinjava.JinjavaConfig;
11+
import com.hubspot.jinjava.LegacyOverrides;
1112
import com.hubspot.jinjava.features.BuiltInFeatures;
1213
import com.hubspot.jinjava.features.FeatureConfig;
1314
import com.hubspot.jinjava.features.FeatureStrategies;
@@ -319,6 +320,14 @@ public void testLstripBlocks() {
319320

320321
@Test
321322
public void itTreatsEscapedQuotesSameWhenNotInQuotes() {
323+
config =
324+
BaseJinjavaTest
325+
.newConfigBuilder()
326+
.withLegacyOverrides(
327+
LegacyOverrides.newBuilder().withHandleBackslashInQuotesOnly(false).build()
328+
)
329+
.build();
330+
322331
List<Token> tokens = tokens("tag-with-all-escaped-quotes");
323332
assertThat(tokens).hasSize(8);
324333
assertThat(tokens.stream().map(Token::getType).collect(Collectors.toList()))

0 commit comments

Comments
 (0)