package io.gitlab.jfronny.muscript.gson.impl.typed; import io.gitlab.jfronny.gson.TypeAdapter; import io.gitlab.jfronny.gson.stream.*; import io.gitlab.jfronny.muscript.data.dynamic.DList; import io.gitlab.jfronny.muscript.data.dynamic.Dynamic; import io.gitlab.jfronny.muscript.data.dynamic.additional.DFinal; import io.gitlab.jfronny.muscript.gson.impl.DynamicSerializer; import java.io.IOException; import java.util.LinkedList; import java.util.List; public class DListSerializer extends TypeAdapter { private final DynamicSerializer base; public DListSerializer(DynamicSerializer base) { this.base = base; } @Override public void write(JsonWriter w, DList dynamic) throws IOException { w.beginArray(); for (Dynamic value : dynamic.getValue()) { base.write(w, value); } w.endArray(); } @Override public DList read(JsonReader r) throws IOException { List elements = new LinkedList<>(); r.beginArray(); while (r.peek() != JsonToken.END_ARRAY) { elements.add(base.read(r)); } r.endArray(); return DFinal.of(elements); } }