Better-Whitelist/src/main/java/io/gitlab/jfronny/betterwhitelist/DSerializer.java

26 lines
1.1 KiB
Java

package io.gitlab.jfronny.betterwhitelist;
import io.gitlab.jfronny.muscript.ast.DynamicExpr;
import io.gitlab.jfronny.muscript.ast.context.ExprUtils;
import io.gitlab.jfronny.muscript.core.MuScriptVersion;
import io.gitlab.jfronny.muscript.data.additional.DataExprMapper;
import io.gitlab.jfronny.muscript.data.additional.libs.StandardLib;
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
import io.gitlab.jfronny.muscript.parser.Parser;
import io.gitlab.jfronny.muscript.runtime.Runtime;
import io.gitlab.jfronny.muscript.serialize.Decompiler;
import static io.gitlab.jfronny.muscript.ast.context.ExprUtils.asDynamic;
public class DSerializer {
public static String serialize(Dynamic d) {
return Decompiler.decompile(DataExprMapper.map(d));
}
public static Dynamic deserialize(String s) {
DynamicExpr dynamicExpr = asDynamic(Parser.parse(MuScriptVersion.DEFAULT, s));
if (!ExprUtils.isDirect(dynamicExpr)) throw new RuntimeException("Invalid dynamic");
return Runtime.evaluate(dynamicExpr, StandardLib.createScope(MuScriptVersion.DEFAULT));
}
}