diff --git a/addons/io_scene_swbf_msh/option_file_parser.py b/addons/io_scene_swbf_msh/option_file_parser.py new file mode 100644 index 0000000..a8494d3 --- /dev/null +++ b/addons/io_scene_swbf_msh/option_file_parser.py @@ -0,0 +1,46 @@ +""" Parses .tga.option and .msh.option files. Only used with the former as of now. """ + +import os + + +class MungeOptions: + + def __init__(self, path_to_option_file): + self.options = {} + + if os.path.exists(path_to_option_file): + with open(path_to_option_file, 'r') as option_file: + option_text = option_file.read() + + option_parts = option_text.split() + + current_parameter = "" + + for part in option_parts: + if part.startswith("-"): + current_parameter = part[1:] + self.options[current_parameter] = "" + elif current_parameter: + current_value = self.options[current_parameter] + # Keep adding to value in case there are vector options + self.options[current_parameter] += part if not current_value else (" " + part) + + def is_option_present(self, param): + return param in self.options + + def get_bool(self, param, default=False): + return True if param in self.options else default + + def get_float(self, param, default=0.0): + if param in self.options: + try: + result = float(self.options[param]) + except: + result = default + finally: + return result + else: + return default + + def get_string(self, param, default=""): + return self.options.get(param, default)