diff options
| author | mat <github@matdoes.dev> | 2022-05-24 20:28:08 -0500 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-05-24 20:28:08 -0500 |
| commit | 0a314bca16f6de199c319ffb0d84a5d5c3a61387 (patch) | |
| tree | af5293d0eafb86e12653719b2af0c3f36e8f5663 /code-generator/lib/mappings.py | |
| parent | 04aea6afaf6819a66181d5d544356764d118b1bb (diff) | |
| download | azalea-drasl-0a314bca16f6de199c319ffb0d84a5d5c3a61387.tar.xz | |
rename code-generator to codegen
Diffstat (limited to 'code-generator/lib/mappings.py')
| -rw-r--r-- | code-generator/lib/mappings.py | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/code-generator/lib/mappings.py b/code-generator/lib/mappings.py deleted file mode 100644 index fb3e8bda..00000000 --- a/code-generator/lib/mappings.py +++ /dev/null @@ -1,60 +0,0 @@ -class Mappings: - __slots__ = ('classes', 'fields', 'methods') - - def __init__(self, classes, fields, methods): - self.classes = classes - self.fields = fields - self.methods = methods - - @staticmethod - def parse(mappings_txt): - classes = {} - fields = {} - methods = {} - - current_obfuscated_class_name = None - - for line in mappings_txt.splitlines(): - if line.startswith('#') or line == '': - continue - - if line.startswith(' '): - # if a line starts with 4 spaces, that means it's a method or a field - if '(' in line: - # if it has an opening parenthesis, it's a method - real_name_with_parameters_and_line, obfuscated_name = line.strip().split(' -> ') - real_name_with_parameters = real_name_with_parameters_and_line.split( - ':')[-1] - - real_name = real_name_with_parameters.split('(')[0] - parameters = real_name_with_parameters.split('(')[1] - - if current_obfuscated_class_name not in methods: - methods[current_obfuscated_class_name] = {} - methods[current_obfuscated_class_name][ - f'{obfuscated_name}({parameters})'] = real_name - else: - # otherwise, it's a field - real_name_with_type, obfuscated_name = line.strip().split(' -> ') - real_name = real_name_with_type.split(' ')[1] - - if current_obfuscated_class_name not in fields: - fields[current_obfuscated_class_name] = {} - fields[current_obfuscated_class_name][obfuscated_name] = real_name - else: - # otherwise it's a class - real_name, obfuscated_name = line.strip(':').split(' -> ') - current_obfuscated_class_name = obfuscated_name - - classes[obfuscated_name] = real_name - - return Mappings(classes, fields, methods) - - def get_field(self, obfuscated_class_name, obfuscated_field_name): - return self.fields.get(obfuscated_class_name, {}).get(obfuscated_field_name) - - def get_class(self, obfuscated_class_name): - return self.classes[obfuscated_class_name] - - def get_method(self, obfuscated_class_name, obfuscated_method_name, obfuscated_signature): - return self.methods[obfuscated_class_name][f'{obfuscated_method_name}({obfuscated_signature})'] |
