Skip to content

Commit

Permalink
Fix parchment writing issues
Browse files Browse the repository at this point in the history
  • Loading branch information
lukebemish committed Oct 18, 2024
1 parent 3eac523 commit 01a800f
Showing 1 changed file with 25 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import net.fabricmc.mappingio.tree.MappingTree;
import org.parchmentmc.feather.io.gson.MDCGsonAdapterFactory;
import org.parchmentmc.feather.io.gson.SimpleVersionAdapter;
import org.parchmentmc.feather.mapping.ImmutableVersionedMappingDataContainer;
import org.parchmentmc.feather.mapping.MappingDataBuilder;
import org.parchmentmc.feather.mapping.VersionedMDCDelegate;
import org.parchmentmc.feather.mapping.VersionedMappingDataContainer;
import org.parchmentmc.feather.util.SimpleVersion;

Expand All @@ -16,7 +16,7 @@
public class ParchmentMappingWriter implements MappingsSourceImpl.MappingConsumer {
private static final Gson GSON = new GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapterFactory(new MDCGsonAdapterFactory(true))
.registerTypeAdapterFactory(new MDCGsonAdapterFactory())
.registerTypeAdapter(SimpleVersion.class, new SimpleVersionAdapter())
.create();

Expand All @@ -30,7 +30,7 @@ public ParchmentMappingWriter(Writer writer) {
@Override
public void close() throws IOException {
try {
writer.write(GSON.toJson(new VersionedMDCDelegate<>(VersionedMappingDataContainer.CURRENT_FORMAT, builder)));
writer.write(GSON.toJson(new ImmutableVersionedMappingDataContainer(VersionedMappingDataContainer.CURRENT_FORMAT, builder.getPackages(), builder.getClasses())));
} finally {
writer.close();
}
Expand All @@ -49,14 +49,16 @@ public void accept(MappingTree mappings) {
}
boolean isPackage = dstName.endsWith("/package-info");
if (isPackage) {
var packageBuilder = builder.createPackage(dstName.substring(0, dstName.length() - "/package-info".length()));
if (classMapping.getComment() != null) {
var packageBuilder = builder.createPackage(dstName.substring(0, dstName.length() - "/package-info".length()));
packageBuilder.addJavadoc(classMapping.getComment().split("\n"));
}
} else {
var classBuilder = builder.createClass(dstName);
boolean classHasDocs = false;
if (classMapping.getComment() != null) {
classBuilder.addJavadoc(classMapping.getComment().split("\n"));
classHasDocs = true;
}
for (var method : classMapping.getMethods()) {
var methodDstName = method.getSrcName();
Expand All @@ -73,9 +75,12 @@ public void accept(MappingTree mappings) {
dstDesc = method.getSrcDesc();
}
}
boolean methodHasDocs = false;
var methodBuilder = classBuilder.createMethod(methodDstName, dstDesc);
if (method.getComment() != null) {
methodBuilder.addJavadoc(method.getComment().split("\n"));
classHasDocs = true;
methodHasDocs = true;
}
for (var arg : method.getArgs()) {
byte index = (byte) arg.getLvIndex();
Expand All @@ -88,14 +93,25 @@ public void accept(MappingTree mappings) {
argDstName = arg.getSrcName();
}
}
boolean argHasDocs = false;
if (argDstName != null) {
methodHasDocs = true;
argHasDocs = true;
argBuilder.setName(argDstName);
}
if (arg.getComment() != null) {
methodHasDocs = true;
argHasDocs = true;
argBuilder.addJavadoc(arg.getComment().split("\n"));
}
if (!argHasDocs) {
methodBuilder.removeParameter(index);
}
}
}
if (!methodHasDocs) {
classBuilder.removeMethod(methodDstName, dstDesc);
}
}
for (var field : classMapping.getFields()) {
var fieldDstName = field.getSrcName();
Expand All @@ -112,11 +128,15 @@ public void accept(MappingTree mappings) {
dstDesc = field.getSrcDesc();
}
}
var fieldBuilder = classBuilder.createField(fieldDstName, dstDesc);
if (field.getComment() != null) {
classHasDocs = true;
var fieldBuilder = classBuilder.createField(fieldDstName, dstDesc);
fieldBuilder.addJavadoc(field.getComment().split("\n"));
}
}
if (!classHasDocs) {
builder.removeClass(dstName);
}
}
}
}
Expand Down

0 comments on commit 01a800f

Please sign in to comment.