summaryrefslogtreecommitdiff
path: root/enigma/src/main/java/cuchaz
diff options
context:
space:
mode:
authorGravatar Xander2020-07-14 03:24:49 +0800
committerGravatar GitHub2020-07-13 15:24:49 -0400
commit6661dbd70f59c35842d113a14de3c00acf43ef7c (patch)
tree683da4299f2ba6a0862b278bdc24897a30c70f0d /enigma/src/main/java/cuchaz
parentFix array classes not being translated correctly (#293) (diff)
downloadenigma-fork-6661dbd70f59c35842d113a14de3c00acf43ef7c.tar.gz
enigma-fork-6661dbd70f59c35842d113a14de3c00acf43ef7c.tar.xz
enigma-fork-6661dbd70f59c35842d113a14de3c00acf43ef7c.zip
Mapping format fixes (#294)
* add test to ensure mapping formats can read/write properly * fix not baking last entries in TinyV2 reader * fix broken filter in Enigma File writer * Fix Enigma Zip writer ZipFS exception on non-matching filesystems
Diffstat (limited to 'enigma/src/main/java/cuchaz')
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java6
-rw-r--r--enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java25
2 files changed, 21 insertions, 10 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java
index 7570d4b..378ed98 100644
--- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java
+++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/enigma/EnigmaMappingsWriter.java
@@ -55,8 +55,8 @@ public enum EnigmaMappingsWriter implements MappingsWriter {
55 @Override 55 @Override
56 public void write(EntryTree<EntryMapping> mappings, MappingDelta<EntryMapping> delta, Path path, ProgressListener progress, MappingSaveParameters saveParameters) { 56 public void write(EntryTree<EntryMapping> mappings, MappingDelta<EntryMapping> delta, Path path, ProgressListener progress, MappingSaveParameters saveParameters) {
57 Collection<ClassEntry> classes = mappings.getRootNodes() 57 Collection<ClassEntry> classes = mappings.getRootNodes()
58 .filter(entry -> entry instanceof ClassEntry) 58 .filter(entry -> entry.getEntry() instanceof ClassEntry)
59 .map(entry -> (ClassEntry) entry) 59 .map(entry -> (ClassEntry) entry.getEntry())
60 .collect(Collectors.toList()); 60 .collect(Collectors.toList());
61 61
62 progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing")); 62 progress.init(classes.size(), I18n.translate("progress.mappings.enigma_file.writing"));
@@ -148,7 +148,7 @@ public enum EnigmaMappingsWriter implements MappingsWriter {
148 private void deleteDeadPackages(Path root, Path packagePath) throws IOException { 148 private void deleteDeadPackages(Path root, Path packagePath) throws IOException {
149 for (int i = packagePath.getNameCount() - 1; i >= 0; i--) { 149 for (int i = packagePath.getNameCount() - 1; i >= 0; i--) {
150 Path subPath = packagePath.subpath(0, i + 1); 150 Path subPath = packagePath.subpath(0, i + 1);
151 Path packagePart = root.resolve(subPath); 151 Path packagePart = root.resolve(subPath.toString());
152 if (isEmpty(packagePart)) { 152 if (isEmpty(packagePart)) {
153 Files.deleteIfExists(packagePart); 153 Files.deleteIfExists(packagePart);
154 } 154 }
diff --git a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java
index dc25569..dc3246d 100644
--- a/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java
+++ b/enigma/src/main/java/cuchaz/enigma/translation/mapping/serde/tinyv2/TinyV2Reader.java
@@ -71,13 +71,7 @@ public final class TinyV2Reader implements MappingsReader {
71 for (int i = INDENT_CLEAR_START[indent]; i < STATE_SIZE; i++) { 71 for (int i = INDENT_CLEAR_START[indent]; i < STATE_SIZE; i++) {
72 state.clear(i); 72 state.clear(i);
73 if (holds[i] != null) { 73 if (holds[i] != null) {
74 RawEntryMapping mapping = holds[i].getMapping(); 74 bakeHeld(mappings, holds[i]);
75 if (mapping != null) {
76 EntryMapping baked = mapping.bake();
77 if (baked != null) {
78 mappings.insert(holds[i].getEntry(), baked);
79 }
80 }
81 holds[i] = null; 75 holds[i] = null;
82 } 76 }
83 } 77 }
@@ -187,9 +181,26 @@ public final class TinyV2Reader implements MappingsReader {
187 } 181 }
188 } 182 }
189 183
184 //bake any remainders
185 for (MappingPair<? extends Entry<?>, RawEntryMapping> hold : holds) {
186 if (hold != null) {
187 bakeHeld(mappings, hold);
188 }
189 }
190
190 return mappings; 191 return mappings;
191 } 192 }
192 193
194 private static void bakeHeld(EntryTree<EntryMapping> mappings, MappingPair<? extends Entry<?>, RawEntryMapping> hold2) {
195 RawEntryMapping mapping = hold2.getMapping();
196 if (mapping != null) {
197 EntryMapping baked = mapping.bake();
198 if (baked != null) {
199 mappings.insert(hold2.getEntry(), baked);
200 }
201 }
202 }
203
193 private void unsupportKey(String[] parts) { 204 private void unsupportKey(String[] parts) {
194 throw new IllegalArgumentException("Unsupported key " + parts[0]); 205 throw new IllegalArgumentException("Unsupported key " + parts[0]);
195 } 206 }