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>> { 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()))); } }