def classes_description_from_file(self, content_as_lines : list, root_path:str)-> list: # pure function # -> list of ClassDescription """ Takes root_path where we have our project and relative filename of .py file produces classes description which are found there""" class_started = False classes_information = [] current_class = None class_description.ClassDescription.root_path = root_path for index, line in enumerate(content_as_lines): check_result = self.line_parser('class', line) if check_result == 'start': if class_started: # need to take into account, that start can represent another class start, i.e. end current_class.line_end = index - 1 classes_information.append(current_class) class_started = False class_started = True class_name = self.name_extractor('class', line) start, end = self.extract_brackets_position(line) parent_name = line[start + 1:end].strip() current_class = class_description.ClassDescription(class_name=class_name, file_name=relative_filename, line_start=index, child_of=parent_name) elif check_result == 'end' and class_started: current_class.line_end = index - 1 classes_information.append(current_class) class_started = False print("This condition works!") return classes_information
import class_description class_description.ClassDescription.root_path = r'D:/Literature/CASE' Engine_representation = class_description.ClassDescription( class_name='Engine', file_name=r'ObjectRelations\association_relations.py', line_start=3, line_end=25) Automobile_representation = class_description.ClassDescription( class_name='Automobile', file_name=r'ObjectRelations\association_relations.py', line_start=30, line_end=47) all_classes = [ Engine_representation, Automobile_representation, ] method = class_description.MethodDescription( method_name='__init__', line_start=5, line_end=10, variables=[('engine_manufacturer', 'str'), ('start_probability', 'float')], ) Engine_representation.add_method(method) method = class_description.MethodDescription( method_name='engine_manufacturer',
import class_description class_description.ClassDescription.root_path = r'D:/Literature/CASE' ClassDescription_representation = class_description.ClassDescription( class_name='ClassDescription', file_name=r'class_description.py', line_start=5, line_end=61) all_classes = [ ClassDescription_representation, ] # TODO ClassDescription_representation.add_method( method_name='add_method', #TODO add @!!! static_method!!! line_start=25, line_end=43, variables=[ ('method_name', 'str'), ('line_start', 'int'), ('line_end', 'int'), ('variables', 'list'), ])
import class_description class_description.ClassDescription.root_path = r'D:/Literature/CASE' MethodDescription_representation = class_description.ClassDescription( class_name='MethodDescription', file_name=r'class_description.py', line_start=5, line_end=26) ClassDescription_representation = class_description.ClassDescription( class_name='ClassDescription', file_name=r'class_description.py', line_start=27, line_end=71) all_classes = [ MethodDescription_representation, ClassDescription_representation, ] method = class_description.MethodDescription( method_name='to_list', line_start=19, line_end=26, variables=[], ) MethodDescription_representation.add_method(method) method = class_description.MethodDescription( method_name='__init__',
import class_description class_description.ClassDescription.root_path = r'D:/Literature/CASE' ManufacturedObject_representation = class_description.ClassDescription(class_name='ManufacturedObject', file_name=r'ObjectRelations\inheritance_relations.py', line_start=3, line_end=12, child_of='object') ObjectWithInternalEngine_representation = class_description.ClassDescription(class_name='ObjectWithInternalEngine', file_name=r'ObjectRelations\inheritance_relations.py', line_start=13, line_end=27, child_of='ManufacturedObject') Engine_representation = class_description.ClassDescription(class_name='Engine', file_name=r'ObjectRelations\inheritance_relations.py', line_start=28, line_end=41, child_of='ObjectWithInternalEngine') Automobile_representation = class_description.ClassDescription(class_name='Automobile', file_name=r'ObjectRelations\inheritance_relations.py', line_start=42, line_end=58, child_of='ManufacturedObject') all_classes = [ ManufacturedObject_representation, ObjectWithInternalEngine_representation,