summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/mapping/MappingsReader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/mapping/MappingsReader.java')
-rw-r--r--src/cuchaz/enigma/mapping/MappingsReader.java53
1 files changed, 5 insertions, 48 deletions
diff --git a/src/cuchaz/enigma/mapping/MappingsReader.java b/src/cuchaz/enigma/mapping/MappingsReader.java
index adf460e..1e7b6e3 100644
--- a/src/cuchaz/enigma/mapping/MappingsReader.java
+++ b/src/cuchaz/enigma/mapping/MappingsReader.java
@@ -17,8 +17,6 @@ import java.util.Deque;
17 17
18import com.google.common.collect.Queues; 18import com.google.common.collect.Queues;
19 19
20import cuchaz.enigma.Constants;
21
22public class MappingsReader { 20public class MappingsReader {
23 21
24 public Mappings read(Reader in) throws IOException, MappingParseException { 22 public Mappings read(Reader in) throws IOException, MappingParseException {
@@ -114,62 +112,21 @@ public class MappingsReader {
114 112
115 private ClassMapping readClass(String[] parts, boolean makeSimple) { 113 private ClassMapping readClass(String[] parts, boolean makeSimple) {
116 if (parts.length == 2) { 114 if (parts.length == 2) {
117 String obfName = processName(parts[1], makeSimple); 115 return new ClassMapping(parts[1]);
118 return new ClassMapping(obfName);
119 } else { 116 } else {
120 String obfName = processName(parts[1], makeSimple); 117 return new ClassMapping(parts[1], parts[2]);
121 String deobfName = processName(parts[2], makeSimple);
122 return new ClassMapping(obfName, deobfName);
123 } 118 }
124 } 119 }
125 120
126 private String processName(String name, boolean makeSimple) {
127 if (makeSimple) {
128 return new ClassEntry(name).getSimpleName();
129 } else {
130 return moveClassOutOfDefaultPackage(name, Constants.NonePackage);
131 }
132 }
133
134 private String moveClassOutOfDefaultPackage(String className, String newPackageName) {
135 ClassEntry classEntry = new ClassEntry(className);
136 if (classEntry.isInDefaultPackage()) {
137 return newPackageName + "/" + classEntry.getName();
138 }
139 return className;
140 }
141
142 private FieldMapping readField(String[] parts) { 121 private FieldMapping readField(String[] parts) {
143 return new FieldMapping(parts[1], parts[2]); 122 return new FieldMapping(parts[1], new Type(parts[3]), parts[2]);
144 } 123 }
145 124
146 private MethodMapping readMethod(String[] parts) { 125 private MethodMapping readMethod(String[] parts) {
147 if (parts.length == 3) { 126 if (parts.length == 3) {
148 String obfName = parts[1]; 127 return new MethodMapping(parts[1], new Signature(parts[2]));
149 Signature obfSignature = moveSignatureOutOfDefaultPackage(new Signature(parts[2]), Constants.NonePackage);
150 return new MethodMapping(obfName, obfSignature);
151 } else { 128 } else {
152 String obfName = parts[1]; 129 return new MethodMapping(parts[1], new Signature(parts[3]), parts[2]);
153 String deobfName = parts[2];
154 Signature obfSignature = moveSignatureOutOfDefaultPackage(new Signature(parts[3]), Constants.NonePackage);
155 if (obfName.equals(deobfName)) {
156 return new MethodMapping(obfName, obfSignature);
157 } else {
158 return new MethodMapping(obfName, obfSignature, deobfName);
159 }
160 } 130 }
161 } 131 }
162
163 private Signature moveSignatureOutOfDefaultPackage(Signature signature, final String newPackageName) {
164 return new Signature(signature, new ClassNameReplacer() {
165 @Override
166 public String replace(String className) {
167 ClassEntry classEntry = new ClassEntry(className);
168 if (classEntry.isInDefaultPackage()) {
169 return newPackageName + "/" + className;
170 }
171 return null;
172 }
173 });
174 }
175} 132}