import os import re original_path = 'lib/controller/home/map_passenger_controller.dart' split_dir = 'lib/controller/home/map' # Read original file with open(original_path, 'r', encoding='utf-8') as f: orig_content = f.read() # Read all split files split_contents = {} for filename in os.listdir(split_dir): if filename.endswith('.dart') and filename != 'map_screen_binding.dart': filepath = os.path.join(split_dir, filename) with open(filepath, 'r', encoding='utf-8') as f: split_contents[filename] = f.read() # Combined content of all split files combined_split_content = '\n'.join(split_contents.values()) # Regex to find method/function declarations inside a class in Dart keywords = { 'if', 'for', 'while', 'switch', 'catch', 'super', 'await', 'print', 'assert', 'dynamic', 'void', 'return', 'with', 'override', 'get', 'set', 'class', 'import', 'extends', 'implements', 'mixin', 'this', 'else', 'try', 'final', 'const', 'var', 'late', 'static', 'factory', 'new', 'abstract', 'covariant', 'external', 'operator', 'part', 'required', 'typedef', 'yield' } def strip_comments(text): text = re.sub(r'/\*.*?\*/', '', text, flags=re.DOTALL) text = re.sub(r'//.*', '', text) return text orig_clean = strip_comments(orig_content) combined_split_clean = strip_comments(combined_split_content) method_decl_pattern = re.compile( r'(?:[a-zA-Z0-9_<>\?\[\]]+(?:\s+[a-zA-Z0-9_<>\?\[\]]+)*\s+)?([a-zA-Z0-9_]+)\s*\([^\)]*\)\s*(?:async)?\s*(?:=>|\{)' ) original_methods = set() for match in method_decl_pattern.finditer(orig_clean): method_name = match.group(1) if method_name not in keywords and not method_name.isdigit(): original_methods.add(method_name) var_decl_pattern = re.compile( r'\b(?:var|final|const|late|Rx[a-zA-Z]+|String|int|double|bool|List|Map|Set|Timer|LatLng|Position|IntaleqMapController)\??\s+([a-zA-Z0-9_]+)\b' ) original_vars = set() for match in var_decl_pattern.finditer(orig_clean): var_name = match.group(1) if var_name not in keywords and not var_name.isdigit(): original_vars.add(var_name) missing_methods = [] for method in sorted(original_methods): if not re.search(r'\b' + re.escape(method) + r'\b', combined_split_clean): missing_methods.append(method) missing_vars = [] for var in sorted(original_vars): if not re.search(r'\b' + re.escape(var) + r'\b', combined_split_clean): missing_vars.append(var) print("--- MISSING METHODS ---") print(f"Total original methods found: {len(original_methods)}") print(f"Total missing: {len(missing_methods)}") for m in missing_methods: print(f" - {m}") print("\n--- MISSING VARIABLES/FIELDS ---") print(f"Total original variables found: {len(original_vars)}") print(f"Total missing: {len(missing_vars)}") for v in missing_vars: print(f" - {v}")