mirror of
https://github.com/opentibiabr/canary
synced 2026-08-16 06:26:09 -04:00
79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
|
|
import os
|
||
|
|
import re
|
||
|
|
import argparse
|
||
|
|
|
||
|
|
# List of includes to remove
|
||
|
|
includes_to_remove = [
|
||
|
|
'#include "creatures/players/wheel/player_wheel.hpp"',
|
||
|
|
'#include "creatures/players/vip/player_vip.hpp"',
|
||
|
|
'#include "creatures/players/achievement/player_achievement.hpp"',
|
||
|
|
'#include "creatures/players/cyclopedia/player_badge.hpp"',
|
||
|
|
'#include "creatures/players/cyclopedia/player_cyclopedia.hpp"',
|
||
|
|
'#include "creatures/players/cyclopedia/player_title.hpp"',
|
||
|
|
'#include "creatures/players/wheel/wheel_gems.hpp"',
|
||
|
|
]
|
||
|
|
|
||
|
|
# List of method calls to update from '->' to '.'
|
||
|
|
methods_to_update = [
|
||
|
|
'wheel',
|
||
|
|
'vip',
|
||
|
|
'achiev',
|
||
|
|
'badge',
|
||
|
|
'title',
|
||
|
|
'cyclopedia'
|
||
|
|
'm_wheelPlayer'
|
||
|
|
]
|
||
|
|
|
||
|
|
def remove_includes(content):
|
||
|
|
for include in includes_to_remove:
|
||
|
|
# Remove the specific include statement
|
||
|
|
include_pattern = r'^' + re.escape(include) + r'\s*\n'
|
||
|
|
content = re.sub(include_pattern, '', content, flags=re.MULTILINE)
|
||
|
|
|
||
|
|
# Remove only the blank lines below the removed include
|
||
|
|
content = re.sub(r'(' + re.escape(include) + r'\s*\n)\n+', r'\1', content)
|
||
|
|
|
||
|
|
return content
|
||
|
|
|
||
|
|
def update_method_calls(content):
|
||
|
|
for method in methods_to_update:
|
||
|
|
# Replace 'method()->' with 'method().' for each method in the list
|
||
|
|
pattern = rf'\b{method}\(\)->'
|
||
|
|
replacement = f'{method}().'
|
||
|
|
content = re.sub(pattern, replacement, content)
|
||
|
|
|
||
|
|
return content
|
||
|
|
|
||
|
|
def process_files(file_path):
|
||
|
|
with open(file_path, 'r', encoding='utf-8') as file:
|
||
|
|
content = file.read()
|
||
|
|
|
||
|
|
# Apply the include removal
|
||
|
|
modified_content = remove_includes(content)
|
||
|
|
|
||
|
|
# Apply the method call update
|
||
|
|
modified_content = update_method_calls(modified_content)
|
||
|
|
|
||
|
|
# Save the modified file if changes were made
|
||
|
|
if content != modified_content:
|
||
|
|
with open(file_path, 'w', encoding='utf-8') as file:
|
||
|
|
file.write(modified_content)
|
||
|
|
print(f'Modifications applied to: {file_path}')
|
||
|
|
else:
|
||
|
|
print(f'No modifications needed for: {file_path}')
|
||
|
|
|
||
|
|
def main(directory):
|
||
|
|
# Traverse the specified folder and find all .hpp and .cpp files
|
||
|
|
for root, _, files in os.walk(directory):
|
||
|
|
for file in files:
|
||
|
|
if file.endswith(('.cpp', '.hpp')):
|
||
|
|
file_path = os.path.join(root, file)
|
||
|
|
process_files(file_path)
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
parser = argparse.ArgumentParser(description='Remove specific includes and update method calls in .cpp and .hpp files.')
|
||
|
|
parser.add_argument('directory', type=str, nargs='?', default='../../src/', help='Path of the directory to be scanned.')
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
main(args.directory)
|