from parse.StoryMap import StoryMap, ModifyReason, FragmentSlice from typing import Dict, List class CmpTool: def __init__(self): pass def graph_compare(self, graph_new: Dict[str, StoryMap], graph_old: Dict[str, StoryMap]): fragments_has_removed = [] for story in graph_old.values(): fragments_has_removed = fragments_has_removed + self.__event_remove_check(graph_new, story) pass fragments_has_appended = [] for story in graph_new.values(): fragments_has_appended = fragments_has_appended + self.__event_append_check(graph_old, story) pass pass def __event_remove_check(self, graph_new: Dict[str, StoryMap], story_old: StoryMap) -> List[FragmentSlice]: list_retv = [] for slice in story_old.slice_list[1:]: if slice.is_define_node[0]: s_name = story_old.story_name f_name = slice.is_define_node[1] story_findout = graph_new[s_name] if story_findout is None or story_findout.get_fragment_defined(f_name) is None: list_retv.append(slice) pass pass pass return list_retv def __event_append_check(self, graph_old: Dict[str, StoryMap], story_new: StoryMap) -> List[FragmentSlice]: list_retv = [] for slice in story_new.slice_list[1:]: if slice.is_define_node[0]: s_name = story_new.story_name f_name = slice.is_define_node[1] story_findout = graph_old[s_name] if story_findout is None or story_findout.get_fragment_defined(f_name) is None: list_retv.append(slice) pass pass pass return list_retv def __event_changed_check(self,):