import re def format_ui_objects_extended(text): lines = text.strip().split('\n') formatted_lines = [] for line in lines: # Extract the variable name and the content inside the curly braces match = re.match(r'^(.*?)\s*=\s*\{(.*)\}', line.strip()) if match: var_name = match.group(1).strip() content = match.group(2).strip() # Extract individual key-value pairs items = [item.strip() for item in content.split(',') if item.strip()] # Map specific keys for alignment parts = {"container": "", "id": "", "objectName": "", "type": "", "unnamed": ""} for item in items: if '"container"' in item: parts["container"] = item + "," elif '"id"' in item: parts["id"] = item + "," elif '"objectName"' in item: parts["objectName"] = item + "," elif '"type"' in item: parts["type"] = item + "," elif '"unnamed"' in item: parts["unnamed"] = item # Construction with specific column offsets: # 1. '=' at 45 (index 44) line_out = f"{var_name:<44}= {{" # 2. 'container' starts immediately after '{ ' line_out += parts["container"] # 3. 'id' at 105 (index 104) line_out = line_out.ljust(104) + parts["id"] # 4. 'objectName' at 129 (index 128) line_out = line_out.ljust(128) + parts["objectName"] # 5. 'type' at 173 (index 172) line_out = line_out.ljust(172) + parts["type"] # 6. 'unnamed' at 205 (index 204) line_out = line_out.ljust(204) + parts["unnamed"] # 7. '}' at 221 (index 220) line_out = line_out.ljust(220) + "}" formatted_lines.append(line_out) return '\n'.join(formatted_lines) # Input data raw_text = """ o_Row_Object = {"id": "_row", "type": "Row", "unnamed": 1 } o_SettingsBase_SettingsInstitutionalRecord = {"container": o_Gui_MainView, "objectName": "_SettingsBase", "type": "SettingsInstitutionalRecord", } o_SettingsInstitutionalRecord_BackButton = {"container": o_SettingsBase_SettingsInstitutionalRecord, "objectName": """ print(format_ui_objects_extended(raw_text))