32 lines
1014 B
Java
32 lines
1014 B
Java
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<Map<String, 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<String, Dynamic<?>> 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('}');
|
|
}
|
|
}
|