Skip to content

Commit 441a03c

Browse files
author
Matthew Coley
committed
Use interpreter locale as default for strftime functions
1 parent 3151167 commit 441a03c

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

src/main/java/com/hubspot/jinjava/objects/date/StrftimeFormatter.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import static com.hubspot.jinjava.objects.date.StrftimeFormatter.ConversionComponent.pattern;
55

66
import com.google.common.collect.ImmutableMap;
7+
import com.hubspot.jinjava.JinjavaConfig;
8+
import com.hubspot.jinjava.interpret.JinjavaInterpreter;
79
import java.time.ZonedDateTime;
810
import java.time.format.DateTimeFormatter;
911
import java.time.format.DateTimeFormatterBuilder;
@@ -158,7 +160,15 @@ public static String format(ZonedDateTime d, Locale locale) {
158160
}
159161

160162
public static String format(ZonedDateTime d, String strftime) {
161-
return format(d, strftime, Locale.ENGLISH);
163+
return format(
164+
d,
165+
strftime,
166+
JinjavaInterpreter
167+
.getCurrentMaybe()
168+
.map(JinjavaInterpreter::getConfig)
169+
.map(JinjavaConfig::getLocale)
170+
.orElse(Locale.ENGLISH)
171+
);
162172
}
163173

164174
public static String format(ZonedDateTime d, String strftime, Locale locale) {

src/test/java/com/hubspot/jinjava/objects/date/StrftimeFormatterTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
55

6+
import com.hubspot.jinjava.Jinjava;
7+
import com.hubspot.jinjava.JinjavaConfig;
8+
import com.hubspot.jinjava.interpret.JinjavaInterpreter;
69
import java.time.ZoneId;
710
import java.time.ZonedDateTime;
811
import java.util.Locale;
@@ -146,4 +149,17 @@ public void itAllowsLiteralCharacters() {
146149
assertThat(StrftimeFormatter.format(d, "1: day %d month %B"))
147150
.isEqualTo("1: day 06 month November");
148151
}
152+
153+
@Test
154+
public void itUsesInterpreterLocaleAsDefault() {
155+
try {
156+
Jinjava jinjava = new Jinjava(
157+
JinjavaConfig.newBuilder().withLocale(Locale.FRENCH).build()
158+
);
159+
JinjavaInterpreter.pushCurrent(jinjava.newInterpreter());
160+
assertThat(StrftimeFormatter.format(d, "%B %-d, %Y")).isEqualTo("novembre 6, 2013");
161+
} finally {
162+
JinjavaInterpreter.popCurrent();
163+
}
164+
}
149165
}

0 commit comments

Comments
 (0)