java-commons/muscript/src/main/java/io/gitlab/jfronny/muscript/data/dynamic/DObject.java
JFronny 9fdcd3dfd1
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
Make DObject.get null-safe
2023-06-29 15:40:45 +02:00

26 lines
878 B
Java

package io.gitlab.jfronny.muscript.data.dynamic;
import io.gitlab.jfronny.muscript.ast.DynamicExpr;
import io.gitlab.jfronny.muscript.ast.dynamic.ObjectLiteral;
import io.gitlab.jfronny.muscript.compiler.CodeLocation;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.stream.Collectors;
public non-sealed interface DObject extends Dynamic<Map<String, Dynamic<?>>> {
default @NotNull Dynamic<?> get(String key) {
return Dynamic.fromNullable(getValue().get(key));
}
default boolean has(String key) {
return getValue().containsKey(key);
}
@Override
default DynamicExpr toExpr() {
return new ObjectLiteral(CodeLocation.NONE, getValue().entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, s -> s.getValue().toExpr().asDynamicExpr())));
}
}