ContentsParser.java
package it.fulminazzo.yagl.guis;
import it.fulminazzo.yagl.contents.GUIContent;
import it.fulminazzo.fulmicollection.interfaces.functions.BiFunctionException;
import it.fulminazzo.fulmicollection.interfaces.functions.TriConsumer;
import it.fulminazzo.yamlparser.configuration.IConfiguration;
import it.fulminazzo.yamlparser.parsers.YAMLParser;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
/**
* A parser to serialize {@link GUIImpl.Contents}.
*/
public class ContentsParser extends YAMLParser<GUIImpl.Contents> {
/**
* Instantiates a new Contents parser.
*/
public ContentsParser() {
super(GUIImpl.Contents.class);
}
@Override
protected BiFunctionException<@NotNull IConfiguration, @NotNull String, GUIImpl.@Nullable Contents> getLoader() {
return (c, s) -> {
List<GUIContent> contents = c.getList(s, GUIContent.class);
if (contents == null) return null;
return new GUIImpl.Contents(contents.toArray(new GUIContent[0]));
};
}
@Override
protected TriConsumer<@NotNull IConfiguration, @NotNull String, GUIImpl.@Nullable Contents> getDumper() {
return (c, s, g) -> {
c.set(s, null);
if (g == null) return;
c.setList(s, g.getContents());
};
}
}