package io.gitlab.jfronny.muscript.data.dynamic.additional; import io.gitlab.jfronny.muscript.ast.DynamicExpr; import io.gitlab.jfronny.muscript.ast.dynamic.Call; import io.gitlab.jfronny.muscript.ast.dynamic.Variable; import io.gitlab.jfronny.muscript.ast.literal.NumberLiteral; import io.gitlab.jfronny.muscript.compiler.CodeLocation; import io.gitlab.jfronny.muscript.compiler.ExprWriter; import io.gitlab.jfronny.muscript.data.dynamic.*; import java.io.IOException; import java.time.LocalTime; import java.util.List; import java.util.Map; import java.util.function.Supplier; public record DTime(Supplier time) implements DObject { @Override public Map> getValue() { return Map.of( "hour", DFinal.of(time.get().getHour()), "minute", DFinal.of(time.get().getMinute()), "second", DFinal.of(time.get().getSecond()) ); } @Override public DString asString() { return DFinal.of(toString()); } @Override public DNumber asNumber() { return DFinal.of(time.get().toSecondOfDay()); } @Override public DynamicExpr toExpr() { return new Call(CodeLocation.NONE, new Variable(CodeLocation.NONE, "time"), List.of( new Call.Arg(new NumberLiteral(CodeLocation.NONE, time.get().getHour()).asDynamicExpr(), false), new Call.Arg(new NumberLiteral(CodeLocation.NONE, time.get().getMinute()).asDynamicExpr(), false), new Call.Arg(new NumberLiteral(CodeLocation.NONE, time.get().getSecond()).asDynamicExpr(), false) )); } @Override public String toString() { return time.get().toString(); } }