java-commons/muscript/src/main/java/io/gitlab/jfronny/muscript/data/dynamic/additional/DDate.java

45 lines
1.3 KiB
Java

package io.gitlab.jfronny.muscript.data.dynamic.additional;
import io.gitlab.jfronny.muscript.compiler.ExprWriter;
import io.gitlab.jfronny.muscript.data.dynamic.*;
import java.io.IOException;
import java.time.LocalDate;
import java.util.Map;
import java.util.function.Supplier;
public record DDate(Supplier<LocalDate> date) implements DObject {
@Override
public Map<String, Dynamic<?>> getValue() {
return Map.of(
"year", DFinal.of(date.get().getYear()),
"month", DFinal.of(date.get().getMonthValue()),
"day", DFinal.of(date.get().getDayOfMonth())
);
}
@Override
public DString asString() {
return DFinal.of(toString());
}
@Override
public DNumber asNumber() {
return DFinal.of(date.get().toEpochDay());
}
@Override
public void serialize(ExprWriter writer) throws IOException {
writer.append("date(")
.append(String.valueOf(date.get().getYear())).append(", ")
.append(String.valueOf(date.get().getMonthValue())).append(", ")
.append(String.valueOf(date.get().getDayOfMonth()))
.append(")");
}
@Override
public String toString() {
return date.get().toString();
}
}