package io.gitlab.jfronny.muscript.data.dynamic; import io.gitlab.jfronny.muscript.compiler.ExprWriter; import io.gitlab.jfronny.muscript.compiler.Lexer; import java.io.IOException; import java.util.Map; public non-sealed interface DObject extends Dynamic>> { default Dynamic get(String key) { return getValue().get(key); } default boolean has(String key) { return getValue().containsKey(key); } @Override default void serialize(ExprWriter writer) throws IOException { writer.append('{'); boolean first = true; for (Map.Entry> entry : getValue().entrySet()) { if (!Lexer.isValidId(entry.getKey())) throw new IllegalStateException("Illegal key: " + entry.getKey()); if (!first) writer.append(", "); first = false; writer.append(entry.getKey()).append(" = "); entry.getValue().serialize(writer); } writer.append('}'); } }