Skip to content

Commit 36ca78f

Browse files
committed
fix: disambiguate months and minutes in concise duration format
Both MONTHS and MINUTES resolved to "m" because the concise label was derived from the first character of the ChronoUnit enum name. Replace with an explicit label map so months renders as "mo".
1 parent 0dbd8e8 commit 36ca78f

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

  • pluginbase-core/src/main/java/dev/demeng/pluginbase

pluginbase-core/src/main/java/dev/demeng/pluginbase/Time.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,17 @@ public static String format(final Duration duration, final boolean concise) {
292292

293293
private static final class Unit {
294294

295+
private static final Map<ChronoUnit, String> CONCISE_LABELS =
296+
ImmutableMap.<ChronoUnit, String>builder()
297+
.put(ChronoUnit.YEARS, "y")
298+
.put(ChronoUnit.MONTHS, "mo")
299+
.put(ChronoUnit.WEEKS, "w")
300+
.put(ChronoUnit.DAYS, "d")
301+
.put(ChronoUnit.HOURS, "h")
302+
.put(ChronoUnit.MINUTES, "m")
303+
.put(ChronoUnit.SECONDS, "s")
304+
.build();
305+
295306
private final long duration;
296307
private final String formalStringPlural;
297308
private final String formalStringSingular;
@@ -302,7 +313,7 @@ private static final class Unit {
302313
this.formalStringPlural = " " + unit.name().toLowerCase(Locale.ROOT);
303314
this.formalStringSingular =
304315
" " + unit.name().substring(0, unit.name().length() - 1).toLowerCase(Locale.ROOT);
305-
this.conciseString = String.valueOf(Character.toLowerCase(unit.name().charAt(0)));
316+
this.conciseString = CONCISE_LABELS.get(unit);
306317
}
307318

308319
public String toString(final boolean concise, final long n) {

0 commit comments

Comments
 (0)