From 6d8c06f26dbfff57a5d17c560c9998c52cfa2ce1 Mon Sep 17 00:00:00 2001 From: JFronny Date: Tue, 7 Jun 2022 13:52:19 +0200 Subject: [PATCH] =?UTF-8?q?Update=20for=20changes=20in=20=CE=BCScript?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../jfronny/respackopts/Respackopts.java | 6 ++--- .../filters/util/FileExpansionProvider.java | 9 +++---- .../gson/BoolExprDeserializer.java | 27 +++++++++++-------- .../respackopts/gson/ExprDeserializer.java | 9 +------ .../gson/StringExprDeserializer.java | 14 ++++++++++ .../jfronny/respackopts/model/DirRpo.java | 4 +-- .../jfronny/respackopts/model/FileRpo.java | 6 ++--- .../model/cache/CachedPackState.java | 4 +-- .../model/tree/ConfigBooleanEntry.java | 6 ++--- .../respackopts/model/tree/ConfigBranch.java | 10 +++---- .../respackopts/model/tree/ConfigEntry.java | 4 +-- .../model/tree/ConfigEnumEntry.java | 6 ++--- .../model/tree/ConfigNumericEntry.java | 6 ++--- .../jfronny/respackopts/util/MetaCache.java | 8 +++--- .../jfronny/respackopts/TemplateTree.java | 4 +-- 16 files changed, 67 insertions(+), 58 deletions(-) create mode 100644 src/main/java/io/gitlab/jfronny/respackopts/gson/StringExprDeserializer.java diff --git a/gradle.properties b/gradle.properties index 31c9f16..b4908dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ maven_group=io.gitlab.jfronny archives_base_name=respackopts fabric_version=0.55.0+1.19 jfapi_version=2.8.1-1654289121 -muscript_version=2022.6.4+17-30-50 +muscript_version=2022.6.7+11-38-13 modrinth_id=TiF5QWZY modrinth_required_dependencies=P7dR8mSH, 9s6osm5g, WKwQAwke diff --git a/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java b/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java index 63dca38..4f76a6e 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java @@ -1,7 +1,7 @@ package io.gitlab.jfronny.respackopts; import io.gitlab.jfronny.gson.*; -import io.gitlab.jfronny.muscript.compiler.*; +import io.gitlab.jfronny.muscript.compiler.expr.*; import io.gitlab.jfronny.respackopts.filters.*; import io.gitlab.jfronny.respackopts.gson.*; import io.gitlab.jfronny.respackopts.gson.entry.*; @@ -46,8 +46,8 @@ public class Respackopts implements ClientModInitializer { .registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer()) .registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer()) .registerTypeAdapter(Expr.class, new ExprDeserializer()) - .registerTypeAdapter(Expr.StringExpr.class, new ExprDeserializer.StringX()) - .registerTypeAdapter(Expr.BoolExpr.class, new BoolExprDeserializer()) + .registerTypeAdapter(StringExpr.class, new StringExprDeserializer()) + .registerTypeAdapter(BoolExpr.class, new BoolExprDeserializer()) .setLenient() .setPrettyPrinting() .create(); diff --git a/src/main/java/io/gitlab/jfronny/respackopts/filters/util/FileExpansionProvider.java b/src/main/java/io/gitlab/jfronny/respackopts/filters/util/FileExpansionProvider.java index b73acf5..db94325 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/filters/util/FileExpansionProvider.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/filters/util/FileExpansionProvider.java @@ -1,8 +1,7 @@ package io.gitlab.jfronny.respackopts.filters.util; -import io.gitlab.jfronny.muscript.*; -import io.gitlab.jfronny.muscript.compiler.*; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.compiler.expr.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.*; import io.gitlab.jfronny.respackopts.util.*; import net.minecraft.resource.*; @@ -11,9 +10,9 @@ import java.io.*; import java.util.*; public class FileExpansionProvider { - public static synchronized InputStream replace(OAny parameter, InputStream is, Map expansions) throws IOException { + public static synchronized InputStream replace(Dynamic parameter, InputStream is, Map expansions) throws IOException { String s = new String(is.readAllBytes()); - for (Map.Entry entry : expansions.entrySet()) { + for (Map.Entry entry : expansions.entrySet()) { s = s.replace("${" + entry.getKey() + "}", entry.getValue().get(parameter)); } return new ByteArrayInputStream(s.getBytes()); diff --git a/src/main/java/io/gitlab/jfronny/respackopts/gson/BoolExprDeserializer.java b/src/main/java/io/gitlab/jfronny/respackopts/gson/BoolExprDeserializer.java index bf9239f..268f72e 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/gson/BoolExprDeserializer.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/gson/BoolExprDeserializer.java @@ -4,15 +4,18 @@ import io.gitlab.jfronny.gson.*; import io.gitlab.jfronny.gson.reflect.*; import io.gitlab.jfronny.muscript.compiler.*; import io.gitlab.jfronny.muscript.compiler.expr.*; +import io.gitlab.jfronny.muscript.compiler.expr.bool.*; +import io.gitlab.jfronny.muscript.compiler.expr.common.*; +import io.gitlab.jfronny.muscript.compiler.expr.dynamic.*; import java.lang.reflect.Type; import java.util.*; -public class BoolExprDeserializer implements JsonDeserializer { - private static final Type conditionListType = new TypeToken>(){}.getType(); +public class BoolExprDeserializer implements JsonDeserializer { + private static final Type conditionListType = new TypeToken>(){}.getType(); @Override - public Expr.BoolExpr deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + public BoolExpr deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (AttachmentHolder.getAttachedVersion() > 7) { return ((Expr)context.deserialize(json, Expr.class)).asBoolExpr(); } @@ -53,29 +56,31 @@ public class BoolExprDeserializer implements JsonDeserializer { throw new JsonParseException("Invalid data type for condition"); } - private Expr.BoolExpr merge(List expressions, Token token) { - Expr.BoolExpr current = expressions.get(0); - for (Expr.BoolExpr expr : expressions.subList(1, expressions.size())) { + private BoolExpr merge(List expressions, Token token) { + BoolExpr current = expressions.get(0); + for (BoolExpr expr : expressions.subList(1, expressions.size())) { current = switch (token) { case EqualEqual -> new Equal(current, expr); case BangEqual -> new Not(new Equal(current, expr)); - default -> new LogicBiExpr(current, expr, token); + case And -> new And(current, expr); + case Or -> new Or(current, expr); + default -> throw new IllegalArgumentException(); }; } return current; } - private Expr.BoolExpr rpoBooleanCondition(String name) { + private BoolExpr rpoBooleanCondition(String name) { if (name.startsWith("modversion:")) { String code = name.substring("modversion:".length()); String mod = code.substring(0, code.indexOf(':')); String predicate = code.substring(code.indexOf(':') + 1); return new Call(new Variable("version"), List.of( - Expr.literal(mod).asObjectExpr(), - Expr.literal(predicate).asObjectExpr() + Expr.literal(mod).asDynamicExpr(), + Expr.literal(predicate).asDynamicExpr() )).asBoolExpr(); } - Expr.ObjectExpr e = null; + DynamicExpr e = null; String[] arr = name.split("[:.]"); for (int i = 0; i < arr.length; i++) { if (i == 0) e = new Variable(arr[i]); diff --git a/src/main/java/io/gitlab/jfronny/respackopts/gson/ExprDeserializer.java b/src/main/java/io/gitlab/jfronny/respackopts/gson/ExprDeserializer.java index 084d5dd..d884436 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/gson/ExprDeserializer.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/gson/ExprDeserializer.java @@ -3,6 +3,7 @@ package io.gitlab.jfronny.respackopts.gson; import io.gitlab.jfronny.gson.*; import io.gitlab.jfronny.muscript.*; import io.gitlab.jfronny.muscript.compiler.*; +import io.gitlab.jfronny.muscript.compiler.expr.*; import java.lang.reflect.Type; import java.util.*; @@ -30,12 +31,4 @@ public class ExprDeserializer implements JsonDeserializer> { throw new JsonParseException("Could not parse script: Expected string"); } } - - public static class StringX implements JsonDeserializer { - @Override - public Expr.StringExpr deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - Expr expr = jsonDeserializationContext.deserialize(jsonElement, Expr.class); - return expr.asStringExpr(); - } - } } diff --git a/src/main/java/io/gitlab/jfronny/respackopts/gson/StringExprDeserializer.java b/src/main/java/io/gitlab/jfronny/respackopts/gson/StringExprDeserializer.java new file mode 100644 index 0000000..aa24ccb --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/respackopts/gson/StringExprDeserializer.java @@ -0,0 +1,14 @@ +package io.gitlab.jfronny.respackopts.gson; + +import io.gitlab.jfronny.gson.*; +import io.gitlab.jfronny.muscript.compiler.expr.*; + +import java.lang.reflect.*; + +public class StringExprDeserializer implements JsonDeserializer { + @Override + public StringExpr deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + Expr expr = jsonDeserializationContext.deserialize(jsonElement, Expr.class); + return expr.asStringExpr(); + } +} diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/DirRpo.java b/src/main/java/io/gitlab/jfronny/respackopts/model/DirRpo.java index 89a4998..53640c9 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/DirRpo.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/DirRpo.java @@ -2,11 +2,11 @@ package io.gitlab.jfronny.respackopts.model; import com.google.gson.annotations.*; import io.gitlab.jfronny.commons.serialize.gson.api.*; -import io.gitlab.jfronny.muscript.compiler.*; +import io.gitlab.jfronny.muscript.compiler.expr.*; public class DirRpo { @SerializedName(value = "condition", alternate = {"conditions"}) - public Expr.BoolExpr condition; + public BoolExpr condition; @SerializedName(value = "fallback", alternate = {"fallbacks"}) public String fallback; diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/FileRpo.java b/src/main/java/io/gitlab/jfronny/respackopts/model/FileRpo.java index 6aa90f3..7a2e9ab 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/FileRpo.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/FileRpo.java @@ -2,17 +2,17 @@ package io.gitlab.jfronny.respackopts.model; import com.google.gson.annotations.*; import io.gitlab.jfronny.commons.serialize.gson.api.*; -import io.gitlab.jfronny.muscript.compiler.*; +import io.gitlab.jfronny.muscript.compiler.expr.*; import java.util.*; public class FileRpo { @SerializedName(value = "condition", alternate = {"conditions"}) - public Expr.BoolExpr condition; + public BoolExpr condition; @SerializedName(value = "fallback", alternate = {"fallbacks"}) public Set fallbacks; @SerializedName(value = "expansion", alternate = {"expansions"}) - public Map expansions; + public Map expansions; @Ignore public String path; diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/cache/CachedPackState.java b/src/main/java/io/gitlab/jfronny/respackopts/model/cache/CachedPackState.java index 770865b..55318a4 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/cache/CachedPackState.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/cache/CachedPackState.java @@ -1,7 +1,7 @@ package io.gitlab.jfronny.respackopts.model.cache; import io.gitlab.jfronny.muscript.*; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.model.DirRpo; import io.gitlab.jfronny.respackopts.model.FileRpo; import io.gitlab.jfronny.respackopts.model.PackMeta; @@ -28,6 +28,6 @@ public record CachedPackState( meta, new HashMap<>(), new HashMap<>(), - new ExpressionParameter(new HashMap<>(branch.getOptic().getValue()))); + new ExpressionParameter(new HashMap<>(branch.getDynamic().getValue()))); } } diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBooleanEntry.java b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBooleanEntry.java index 83cf660..f9b4497 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBooleanEntry.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBooleanEntry.java @@ -1,6 +1,6 @@ package io.gitlab.jfronny.respackopts.model.tree; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.Respackopts; import me.shedaniel.clothconfig2.api.AbstractConfigListEntry; @@ -29,8 +29,8 @@ public class ConfigBooleanEntry extends ConfigEntry { } @Override - public OAny getOptic() { - return (OBool) this::getValue; + public DBool getDynamic() { + return this::getValue; } @Override diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBranch.java b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBranch.java index 29cb712..da831a7 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBranch.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigBranch.java @@ -2,7 +2,7 @@ package io.gitlab.jfronny.respackopts.model.tree; import com.google.common.collect.ImmutableMap; import io.gitlab.jfronny.gson.reflect.TypeToken; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.Respackopts; import io.gitlab.jfronny.respackopts.model.enums.ConfigSyncMode; import io.gitlab.jfronny.respackopts.util.IndentingStringBuilder; @@ -112,12 +112,12 @@ public class ConfigBranch extends ConfigEntry>> { } @Override - public OObject getOptic() { - Map> map = new HashMap<>(); + public DObject getDynamic() { + Map> map = new HashMap<>(); for (Map.Entry> e : super.getValue().entrySet()) { - map.put(Respackopts.sanitizeString(e.getKey()), e.getValue().getOptic()); + map.put(Respackopts.sanitizeString(e.getKey()), e.getValue().getDynamic()); } - return OFinal.of(map); + return DFinal.of(map); } @Override diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEntry.java b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEntry.java index f0041e8..4dc0da4 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEntry.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEntry.java @@ -1,6 +1,6 @@ package io.gitlab.jfronny.respackopts.model.tree; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.Respackopts; import io.gitlab.jfronny.respackopts.model.enums.ConfigSyncMode; import io.gitlab.jfronny.respackopts.model.enums.PackReloadType; @@ -102,7 +102,7 @@ public abstract class ConfigEntry { public abstract void buildShader(StringBuilder sb, String valueName); - public abstract OAny getOptic(); + public abstract Dynamic getDynamic(); public abstract AbstractConfigListEntry buildEntry(GuiEntryBuilderParam guiEntryBuilderParam); diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEnumEntry.java b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEnumEntry.java index 0f57e64..ad21017 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEnumEntry.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigEnumEntry.java @@ -1,6 +1,6 @@ package io.gitlab.jfronny.respackopts.model.tree; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.*; import io.gitlab.jfronny.respackopts.model.enums.*; import io.gitlab.jfronny.respackopts.util.*; @@ -113,8 +113,8 @@ public class ConfigEnumEntry extends ConfigEntry { } @Override - public OAny getOptic() { - return new OEnum(values, getValue()); + public DEnum getDynamic() { + return new DEnum(values, getValue()); } @Override diff --git a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigNumericEntry.java b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigNumericEntry.java index b95f4b3..a2c10c8 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigNumericEntry.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/model/tree/ConfigNumericEntry.java @@ -1,6 +1,6 @@ package io.gitlab.jfronny.respackopts.model.tree; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.Respackopts; import io.gitlab.jfronny.respackopts.model.enums.ConfigSyncMode; import io.gitlab.jfronny.respackopts.model.enums.NumericEntryType; @@ -67,8 +67,8 @@ public class ConfigNumericEntry extends ConfigEntry { } @Override - public OAny getOptic() { - return (ONumber) this::getValue; + public DNumber getDynamic() { + return this::getValue; } @Override diff --git a/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java b/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java index f1fdbd1..633f5dd 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/util/MetaCache.java @@ -2,7 +2,7 @@ package io.gitlab.jfronny.respackopts.util; import io.gitlab.jfronny.commons.throwable.*; import io.gitlab.jfronny.muscript.*; -import io.gitlab.jfronny.muscript.optic.*; +import io.gitlab.jfronny.muscript.dynamic.*; import io.gitlab.jfronny.respackopts.*; import io.gitlab.jfronny.respackopts.model.*; import io.gitlab.jfronny.respackopts.model.cache.*; @@ -139,10 +139,10 @@ public class MetaCache { MetaCache.forEach((id, state) -> { String key = Respackopts.sanitizeString(state.packId()); if (!parameter.has(key)) - parameter.set(key, state.configBranch().getOptic()); + parameter.set(key, state.configBranch().getDynamic()); }); StandardLib.addTo(parameter); - parameter.set("version", OFinal.of(args -> { + parameter.set("version", DFinal.of(args -> { if (args.size() != 2) throw new IllegalArgumentException("Expected 2 arguments on version but got " + args.size()); VersionPredicate predicate; try { @@ -150,7 +150,7 @@ public class MetaCache { } catch (VersionParsingException e) { throw new RuntimeException("Could not parse version predicate", e); } - return OFinal.of(FabricLoader.getInstance().getModContainer(args.get(0).asString().getValue()) + return DFinal.of(FabricLoader.getInstance().getModContainer(args.get(0).asString().getValue()) .map(c -> predicate.test(c.getMetadata().getVersion())) .orElse(false)); })); diff --git a/src/test/java/io/gitlab/jfronny/respackopts/TemplateTree.java b/src/test/java/io/gitlab/jfronny/respackopts/TemplateTree.java index 7ceedf8..476b211 100644 --- a/src/test/java/io/gitlab/jfronny/respackopts/TemplateTree.java +++ b/src/test/java/io/gitlab/jfronny/respackopts/TemplateTree.java @@ -1,10 +1,8 @@ package io.gitlab.jfronny.respackopts; import io.gitlab.jfronny.gson.*; -import io.gitlab.jfronny.muscript.compiler.*; import io.gitlab.jfronny.respackopts.gson.*; import io.gitlab.jfronny.respackopts.gson.entry.*; -import io.gitlab.jfronny.respackopts.model.*; import io.gitlab.jfronny.respackopts.model.tree.*; public class TemplateTree { @@ -14,7 +12,7 @@ public class TemplateTree { .registerTypeAdapter(ConfigBooleanEntry.class, new BooleanEntrySerializer()) .registerTypeAdapter(ConfigBranch.class, new ConfigBranchSerializer()) .registerTypeAdapter(Expr.class, new ExprDeserializer()) - .registerTypeAdapter(Expr.StringExpr.class, new ExprDeserializer.StringX()) + .registerTypeAdapter(Expr.StringExpr.class, new StringExprDeserializer()) .registerTypeAdapter(Expr.BoolExpr.class, new BoolExprDeserializer()) .setLenient() .setPrettyPrinting()