From db55adc791c238761f574c1f41503575b671a2fc Mon Sep 17 00:00:00 2001 From: Cody Cutrer Date: Wed, 5 Feb 2025 08:05:45 -0700 Subject: [PATCH 1/2] Implement PyMap.get with the optional default. --- .../hubspot/jinjava/objects/collections/PyMap.java | 7 +++++++ .../jinjava/objects/collections/PyMapTest.java | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java b/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java index 09a018d81..4384637f4 100644 --- a/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java +++ b/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java @@ -21,6 +21,13 @@ protected Map delegate() { return map; } + public Object get(String key, Object defaultValue) { + if (!map.containsKey(key)) { + return defaultValue; + } + return map.get(key); + } + @Override public Object put(String s, Object o) { if (o == this) { diff --git a/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java b/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java index 9403c1e19..0d046ddae 100644 --- a/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/collections/PyMapTest.java @@ -322,6 +322,18 @@ public void itGetsKeysWithVariableName() { .isEqualTo("value1"); } + @Test + public void itSupportsGetWithOptionalDefault() { + assertThat( + jinjava.render( + "{% set test = {\"key1\": \"value1\"} %}" + + "{{ test.get(\"key2\", \"default\") }}", + Collections.emptyMap() + ) + ) + .isEqualTo("default"); + } + @Test public void itFallsBackUnknownVariableNameToString() { assertThat( From 9c60bf5114a0e80492b3b2c44fa8fe39fa44dc1c Mon Sep 17 00:00:00 2001 From: Cody Cutrer Date: Fri, 14 Mar 2025 09:08:23 -0600 Subject: [PATCH 2/2] proxy to existing method Co-authored-by: Jack Smith <72623970+jasmith-hs@users.noreply.github.com> --- .../java/com/hubspot/jinjava/objects/collections/PyMap.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java b/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java index 4384637f4..c885dfd70 100644 --- a/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java +++ b/src/main/java/com/hubspot/jinjava/objects/collections/PyMap.java @@ -22,10 +22,7 @@ protected Map delegate() { } public Object get(String key, Object defaultValue) { - if (!map.containsKey(key)) { - return defaultValue; - } - return map.get(key); + return getOrDefault(key, defaultValue); } @Override