# read server controller import re if __name__ == '__main__': with open('server_controller.py', 'r') as file: text = file.read().replace('\n', '') text = text.split('def ') del text[0] documentation = '''# the general syntax is # {attribute1: value, attribute2: value, ...} # # for example a valid request to /register would look like # {"email": "user123@example.org", "username": "user123", "password": "FILTERED", "preferred_language": "german"} # while a valid request to /events would be the empty object {} \n''' for method in sorted(text): method = 'def ' + method method_name = re.search(r"def (.*?)\s*\(", method)[1] if method_name[0] == '_': continue directly_used_arguments = re.findall(r"json_request\['(.*?)'\]", method) missing_attributes = re.search(r"missing_attributes\(json_request, \[((.|\n)*?)\]\)", method) if missing_attributes is None: print('HINT: method', method_name, 'does not require any parameters') required_arguments = [] else: required_arguments = re.findall(r"'(.*?)'", missing_attributes[0]) required_arguments = sorted(list(set(required_arguments))) possible_arguments = sorted(list(set(directly_used_arguments + required_arguments))) documentation += method_name + '_required_attributes = ' + str(required_arguments) + '\n' documentation += method_name + '_possible_attributes = ' + str(possible_arguments) + '\n\n' with open("doc/documentation.py", "w", newline='\n') as file: file.write(documentation[:-1]) print(documentation)