1 package net.mograsim.logic.model.snippets;
3 import java.util.function.BiFunction;
5 import com.google.gson.JsonElement;
7 import net.mograsim.logic.model.util.JsonHandler;
9 public interface SnippetDefinintion<C, P, S>
11 public Class<P> getParamClass();
13 public S create(C context, P params);
15 public default S create(C context, JsonElement params)
17 Class<P> paramClass = getParamClass();
18 if (paramClass.equals(Void.class))
21 throw new IllegalArgumentException("Params given where none were expected");
22 return create(context, (P) null);
24 return create(context, JsonHandler.fromJson(params, getParamClass()));
27 public static <C, P, S> SnippetDefinintion<C, P, S> create(Class<P> paramClass, BiFunction<C, P, S> supplier)
29 return new SnippetDefinintion<>()
32 public Class<P> getParamClass()
38 public S create(C context, P params)
40 return supplier.apply(context, params);