import sys import re def refactor_widget(filepath): with open(filepath, 'r') as f: content = f.read() # Refactor _getPassengerPriceText price_text_pattern = re.compile(r'String _getPassengerPriceText\(\s*CarType carType, RideLifecycleController mapPassengerController\) \{.*?return formatter\.format\(roundedPrice\);\s*\}', re.DOTALL) new_price_text = '''String _getPassengerPriceText( CarType carType, RideLifecycleController mapPassengerController) { String rawPrice; switch (carType.carType) { case 'Comfort': rawPrice = mapPassengerController.totalPassengerComfort; break; case 'Fixed Price': rawPrice = mapPassengerController.totalPassengerSpeed; break; case 'Electric': rawPrice = mapPassengerController.totalPassengerElectric; break; case 'Awfar Car': rawPrice = mapPassengerController.totalPassengerBalash; break; case 'Scooter': case 'Pink Bike': rawPrice = mapPassengerController.totalPassengerScooter; break; case 'Van': rawPrice = mapPassengerController.totalPassengerVan; break; case 'Lady': rawPrice = mapPassengerController.totalPassengerLady; break; case 'Rayeh Gai': rawPrice = mapPassengerController.totalPassengerRayehGai; break; default: return '...'; } return rawPrice; }''' content = price_text_pattern.sub(new_price_text, content) # Refactor _getOriginalPrice original_price_pattern = re.compile(r'double _getOriginalPrice\(\s*CarType carType, RideLifecycleController mapPassengerController\) \{.*?return 0\.0;\s*\}\s*\}', re.DOTALL) new_original_price = '''String _getOriginalPrice( CarType carType, RideLifecycleController mapPassengerController) { switch (carType.carType) { case 'Comfort': return mapPassengerController.totalPassengerComfort; case 'Fixed Price': return mapPassengerController.totalPassengerSpeed; case 'Electric': return mapPassengerController.totalPassengerElectric; case 'Awfar Car': return mapPassengerController.totalPassengerBalash; case 'Van': return mapPassengerController.totalPassengerVan; case 'Lady': return mapPassengerController.totalPassengerLady; default: return '0'; } }''' content = original_price_pattern.sub(new_original_price, content) # Refactor _buildRayehGaiOption rayeh_gai_pattern = re.compile(r'Widget _buildRayehGaiOption\(\s*BuildContext context,\s*RideLifecycleController mapPassengerController,\s*String carTypeName,\s*double price\)') content = rayeh_gai_pattern.sub(r'Widget _buildRayehGaiOption(BuildContext context, RideLifecycleController mapPassengerController, String carTypeName, String price)', content) with open(filepath, 'w') as f: f.write(content) print(f"Refactored {filepath}") if __name__ == '__main__': refactor_widget(sys.argv[1])