38 lines
1.2 KiB
Java
38 lines
1.2 KiB
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 io.gitlab.jfronny.muscript.data.dynamic.additional.DFinal;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
|
|
public non-sealed interface DObject extends Dynamic {
|
|
default @Nullable Dynamic get(String key) {
|
|
return 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())));
|
|
}
|
|
|
|
@Override
|
|
Map<String, ? extends Dynamic> getValue();
|
|
|
|
@Override
|
|
default DString asString() {
|
|
return DFinal.of(getValue()
|
|
.entrySet()
|
|
.stream()
|
|
.map(e -> e.getKey() + " = " + e.getValue().asString().getValue())
|
|
.collect(Collectors.joining(", ", "{", "}")));
|
|
}
|
|
}
|