package tc.oc.time;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalUnit;
import tc.oc.commons.core.chat.Component;
import tc.oc.commons.core.chat.Components;
import tc.oc.commons.core.formatting.PeriodFormats;
import tc.oc.commons.core.util.TimeUtils;
public final class PeriodRenderers {
private PeriodRenderers() {}
public static PeriodRenderer colons() { return COLONS; }
private static final PeriodRenderer COLONS = period -> new Component(String.format(
"%s%02d:%02d%s",
period.getUnits().contains(ChronoUnit.HOURS) ? period.get(ChronoUnit.HOURS) + ":" : "",
TimeUtils.getUnitOrZero(period, ChronoUnit.MINUTES),
TimeUtils.getUnitOrZero(period, ChronoUnit.SECONDS),
period.getUnits().contains(ChronoUnit.MILLIS) ? String.format(".%03d", period.get(ChronoUnit.MILLIS)) : ""
));
public static PeriodRenderer natural() { return NATURAL; }
private static final PeriodRenderer NATURAL = period -> {
if(period.getUnits().size() == 1) {
final TemporalUnit unit = period.getUnits().get(0);
return PeriodFormats.formatPeriod(period.get(unit), unit);
} else {
return Components.naturalList(
period.getUnits()
.stream()
.map(unit -> PeriodFormats.formatPeriod(period.get(unit), unit))
);
}
};
}