slash-update
This commit is contained in:
parent
6f6e75f0f4
commit
a6222ab188
|
@ -5,7 +5,12 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="f609c0f2-cd0d-4eea-87f1-8caf02d3f04f" name="Changes" comment="">
|
<list default="true" id="f609c0f2-cd0d-4eea-87f1-8caf02d3f04f" name="Changes" comment="">
|
||||||
|
<change afterPath="$PROJECT_DIR$/frame/MergeView.py" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/frame/ReferView.py" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/parse/StoryMap.py" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/parse/StorylineCmp.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/entry.py" beforeDir="false" afterPath="$PROJECT_DIR$/entry.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
@ -35,15 +40,61 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
|
"Python.MergeView.executor": "Run",
|
||||||
|
"Python.ReferView.executor": "Run",
|
||||||
"Python.ast_load.executor": "Debug",
|
"Python.ast_load.executor": "Debug",
|
||||||
"Python.entry.executor": "Run",
|
"Python.entry.executor": "Debug",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"git-widget-placeholder": "master",
|
"git-widget-placeholder": "master",
|
||||||
"last_opened_file_path": "D:/Projects/Python/StoryCheckTools"
|
"last_opened_file_path": "D:/Projects/Python/StoryCheckTools"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}]]></component>
|
||||||
<component name="RunManager">
|
<component name="RunManager" selected="Python.entry">
|
||||||
|
<configuration name="MergeView" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="StoryTools" />
|
||||||
|
<option name="ENV_FILES" value="" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/frame" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/frame/MergeView.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
<configuration name="ReferView" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="StoryTools" />
|
||||||
|
<option name="ENV_FILES" value="" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/frame" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/frame/ReferView.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
<configuration name="entry" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="entry" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="StoryTools" />
|
<module name="StoryTools" />
|
||||||
<option name="ENV_FILES" value="" />
|
<option name="ENV_FILES" value="" />
|
||||||
|
@ -69,13 +120,15 @@
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.entry" />
|
<item itemvalue="Python.entry" />
|
||||||
|
<item itemvalue="Python.MergeView" />
|
||||||
|
<item itemvalue="Python.ReferView" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
<component name="SharedIndexes">
|
<component name="SharedIndexes">
|
||||||
<attachedChunks>
|
<attachedChunks>
|
||||||
<set>
|
<set>
|
||||||
<option value="bundled-python-sdk-50da183f06c8-d3b881c8e49f-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-233.13135.95" />
|
<option value="bundled-python-sdk-5b207ade9991-746f403e7f0c-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-241.17890.14" />
|
||||||
</set>
|
</set>
|
||||||
</attachedChunks>
|
</attachedChunks>
|
||||||
</component>
|
</component>
|
||||||
|
|
22
entry.py
22
entry.py
|
@ -1,17 +1,9 @@
|
||||||
from PyQt5.QtWidgets import QWidget, QApplication
|
from parse.StoryMap import XAST_ParseTool, storyline_list2map
|
||||||
from frame.CompareWindow import CompareWin
|
from parse.ast_load import global_ast_path
|
||||||
from sys import argv
|
|
||||||
from parse.ast_load import global_ast_path, AstParse
|
|
||||||
|
|
||||||
|
|
||||||
tool = AstParse(global_ast_path)
|
astx = XAST_ParseTool(global_ast_path)
|
||||||
print(tool.generate_time())
|
storys = astx.story_list
|
||||||
storys = tool.peak_storylines()
|
storys_map = storyline_list2map(storys)
|
||||||
storys_2 = tool.peak_storylines()
|
astx.storylines_plait(storys_map)
|
||||||
defferent_list = tool.storylines_compare(storys, storys_2)
|
print(storys_map)
|
||||||
|
|
||||||
app = QApplication(argv)
|
|
||||||
win = CompareWin()
|
|
||||||
win.load_differents(defferent_list, storys, storys_2)
|
|
||||||
win.show()
|
|
||||||
app.exec()
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
from PyQt5.QtWidgets import QWidget, QTextEdit, QTabWidget, QSplitter, QApplication, QVBoxLayout
|
||||||
|
import sys
|
||||||
|
from frame.ReferView import MemoryNode, RelateReferView, EmptyNode, MemorySkin
|
||||||
|
from typing import List
|
||||||
|
from PyQt5.Qt import Qt
|
||||||
|
|
||||||
|
|
||||||
|
class MergeDestination:
|
||||||
|
def __init__(self, story_name:str, prev: MemoryNode, curr: MemoryNode):
|
||||||
|
self.prev_node = prev
|
||||||
|
self.curr_node = curr
|
||||||
|
self.storyline_name = story_name
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class LinesMergeView(QWidget, MemorySkin):
|
||||||
|
def __init__(self, fdefs: MergeDestination, refdefs: List[MergeDestination], parent):
|
||||||
|
QWidget.__init__(self, parent)
|
||||||
|
|
||||||
|
self.define_line = fdefs
|
||||||
|
self.refers_line = refdefs
|
||||||
|
|
||||||
|
layout = QVBoxLayout(self)
|
||||||
|
splitter = QSplitter(Qt.Orientation.Vertical, self)
|
||||||
|
layout.addWidget(splitter)
|
||||||
|
|
||||||
|
self.tabs_con: QTabWidget = QTabWidget(self)
|
||||||
|
splitter.addWidget(self.tabs_con)
|
||||||
|
|
||||||
|
self.define_prev: QTextEdit = QTextEdit(self)
|
||||||
|
self.define_prev.setReadOnly(True)
|
||||||
|
self.tabs_con.addTab(self.define_prev, fdefs.storyline_name)
|
||||||
|
self.refers_views: List[RelateReferView] = []
|
||||||
|
for node in refdefs:
|
||||||
|
refer_view = RelateReferView(node.prev_node, node.curr_node, self)
|
||||||
|
self.tabs_con.addTab(refer_view, node.storyline_name)
|
||||||
|
self.refers_views.append(refer_view)
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.mut_enter = QTextEdit(self)
|
||||||
|
splitter.addWidget(self.mut_enter)
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
def load_from_mem(self) -> None:
|
||||||
|
self.define_prev.setText(self.define_line.prev_node.get_from_memory())
|
||||||
|
self.mut_enter.setText(self.define_line.curr_node.get_from_memory())
|
||||||
|
|
||||||
|
for v in self.refers_views:
|
||||||
|
v.load_from_mem()
|
||||||
|
pass
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
def save_to_mem(self):
|
||||||
|
self.define_line.curr_node.set_to_memory(self.mut_enter.toPlainText())
|
||||||
|
|
||||||
|
for v in self.refers_views:
|
||||||
|
v.save_to_mem()
|
||||||
|
pass
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
defx = MergeDestination("page0", EmptyNode(), EmptyNode())
|
||||||
|
refx0 = MergeDestination("pagex1", EmptyNode(), EmptyNode())
|
||||||
|
view = LinesMergeView(defx, [refx0], None)
|
||||||
|
view.show()
|
||||||
|
app.exec()
|
|
@ -0,0 +1,82 @@
|
||||||
|
from PyQt5.QtWidgets import QTextEdit, QWidget, QSplitter, QVBoxLayout, QApplication
|
||||||
|
from PyQt5.Qt import Qt
|
||||||
|
from abc import abstractmethod
|
||||||
|
from typing import List
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
class MemoryNode:
|
||||||
|
@abstractmethod
|
||||||
|
def get_from_memory(self) -> str:
|
||||||
|
raise NotImplementedError("get_from_memory")
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def set_to_memory(self, content: str):
|
||||||
|
raise NotImplementedError("set_to_memmory")
|
||||||
|
|
||||||
|
|
||||||
|
class MemorySkin:
|
||||||
|
@abstractmethod
|
||||||
|
def load_from_mem(self) -> None:
|
||||||
|
raise NotImplementedError("load_from_mem")
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def save_to_mem(self):
|
||||||
|
raise NotImplementedError("save_to_mem")
|
||||||
|
|
||||||
|
|
||||||
|
class RelateReferView(QWidget, MemorySkin):
|
||||||
|
def __init__(self, prev_frefs: MemoryNode, curr_frefs: MemoryNode, parent):
|
||||||
|
"""
|
||||||
|
构建引用关系视图
|
||||||
|
|
||||||
|
:param prev_frefs: 上游节点
|
||||||
|
:param curr_frefs: 当前引用节点
|
||||||
|
"""
|
||||||
|
QWidget.__init__(self, parent)
|
||||||
|
self.prev_fragment = prev_frefs
|
||||||
|
self.curr_fragment = curr_frefs
|
||||||
|
layout = QVBoxLayout(self)
|
||||||
|
layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
|
||||||
|
splitter_container = QSplitter(Qt.Orientation.Vertical, self)
|
||||||
|
layout.addWidget(splitter_container)
|
||||||
|
|
||||||
|
self.immut_view: QTextEdit = QTextEdit(self)
|
||||||
|
self.immut_view.setReadOnly(True)
|
||||||
|
self.mut_refers: QTextEdit = QTextEdit(self)
|
||||||
|
splitter_container.addWidget(self.immut_view)
|
||||||
|
splitter_container.addWidget(self.mut_refers)
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
def load_from_mem(self):
|
||||||
|
"""
|
||||||
|
载入内存内容到视图
|
||||||
|
"""
|
||||||
|
self.immut_view.setText(self.prev_fragment.get_from_memory())
|
||||||
|
self.mut_refers.setText(self.curr_fragment.get_from_memory())
|
||||||
|
pass
|
||||||
|
|
||||||
|
def save_to_mem(self):
|
||||||
|
"""
|
||||||
|
保存视图内容到内存
|
||||||
|
"""
|
||||||
|
self.prev_fragment.set_to_memory(self.immut_view.toPlainText())
|
||||||
|
self.curr_fragment.set_to_memory(self.mut_refers.toPlainText())
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EmptyNode(MemoryNode):
|
||||||
|
def get_from_memory(self) -> str:
|
||||||
|
return "站位视图内容"
|
||||||
|
|
||||||
|
def set_to_memory(self, content: str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
view = RelateReferView(EmptyNode(), EmptyNode(), None)
|
||||||
|
view.show()
|
||||||
|
app.exec()
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,149 @@
|
||||||
|
import xml.dom.minidom as mdom
|
||||||
|
from typing import List, Tuple, Dict
|
||||||
|
from enum import Enum
|
||||||
|
from frame.ReferView import EmptyNode, MemoryNode
|
||||||
|
|
||||||
|
|
||||||
|
class ModifyReason(Enum):
|
||||||
|
Removed = 0,
|
||||||
|
Append = 1,
|
||||||
|
Changed = 2,
|
||||||
|
Nothing = 4,
|
||||||
|
|
||||||
|
|
||||||
|
class FragmentSlice(EmptyNode):
|
||||||
|
def __init__(self, def_mark: bool = False, name: str= ""):
|
||||||
|
self.is_define_node = (def_mark, name)
|
||||||
|
self.story_refer = ""
|
||||||
|
self.fragm_refer = ""
|
||||||
|
|
||||||
|
self.prev_node: 'FragmentSlice' = None # 上游节点
|
||||||
|
self.next_node: 'FragmentSlice' = None # 下游节点
|
||||||
|
self.refers_slice: Dict[str, 'FragmentSlice'] = {} # 引用切面
|
||||||
|
|
||||||
|
self.changed_prev_nodes: List[Tuple[ModifyReason, 'FragmentSlice']] = [] # 变更的上游节点
|
||||||
|
self.text_sections: List[str] = [] # 文本段落
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_from_memory(self) -> str:
|
||||||
|
return r"\n".join(self.text_sections)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def set_to_memory(self, content: str):
|
||||||
|
self.text_sections = content.split(r"\n")
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class StoryMap:
|
||||||
|
def __init__(self, name: str):
|
||||||
|
self.story_name = name
|
||||||
|
self.sort_index = 0
|
||||||
|
self.empty_head = FragmentSlice()
|
||||||
|
self.slice_list: List[FragmentSlice] = [self.empty_head]
|
||||||
|
pass
|
||||||
|
|
||||||
|
def append_fragment_slice(self, node: FragmentSlice):
|
||||||
|
self.slice_list[-1].next_node = node
|
||||||
|
node.prev_node = self.slice_list[-1]
|
||||||
|
self.slice_list.append(node)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_fragment_defined(self, name: str) -> FragmentSlice:
|
||||||
|
for fit in self.slice_list:
|
||||||
|
if fit.is_define_node[0]:
|
||||||
|
if fit.is_define_node[1] == name:
|
||||||
|
return fit
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
class XAST_ParseTool:
|
||||||
|
def __init__(self, ast_path: str):
|
||||||
|
self.dom_tree = mdom.parse(ast_path)
|
||||||
|
self.story_list: List[StoryMap] = []
|
||||||
|
names = self.story_names()
|
||||||
|
for nm in names:
|
||||||
|
vinst = self.__extract_empty_storymap(nm)
|
||||||
|
self.__storynode_initfrags(vinst[0], vinst[1])
|
||||||
|
self.story_list.append(vinst[0])
|
||||||
|
pass
|
||||||
|
|
||||||
|
def story_names(self) -> List[str]:
|
||||||
|
"""
|
||||||
|
获取所有故事名称
|
||||||
|
:return: List[故事名]
|
||||||
|
"""
|
||||||
|
storys = self.dom_tree.getElementsByTagName("story")
|
||||||
|
values = []
|
||||||
|
for n in storys:
|
||||||
|
values.append(n.getAttribute("name"))
|
||||||
|
pass
|
||||||
|
return values
|
||||||
|
|
||||||
|
def __extract_empty_storymap(self, name: str) -> Tuple[StoryMap, mdom.Element]:
|
||||||
|
storys = self.dom_tree.getElementsByTagName("story")
|
||||||
|
for node in storys:
|
||||||
|
if node.getAttribute("name") == name:
|
||||||
|
mem_node = StoryMap(name)
|
||||||
|
mem_node.sort_index = int(node.getAttribute("sort"))
|
||||||
|
return (mem_node, node)
|
||||||
|
pass
|
||||||
|
return None
|
||||||
|
|
||||||
|
def __storynode_initfrags(self, node: StoryMap, e: mdom.Element):
|
||||||
|
first_elem: mdom.Element = e.firstChild
|
||||||
|
while first_elem != None:
|
||||||
|
if hasattr(first_elem, "tagName"):
|
||||||
|
dom_tag = first_elem.tagName
|
||||||
|
if first_elem.tagName == "fragment":
|
||||||
|
fnode = FragmentSlice(True, first_elem.getAttribute("name"))
|
||||||
|
self.__fragmnode_init_desc(fnode, first_elem)
|
||||||
|
node.append_fragment_slice(fnode)
|
||||||
|
elif first_elem.tagName == "refer":
|
||||||
|
fnode = FragmentSlice()
|
||||||
|
fnode.story_refer = first_elem.getAttribute("story")
|
||||||
|
fnode.fragm_refer = first_elem.getAttribute("fragment")
|
||||||
|
self.__fragmnode_init_desc(fnode, first_elem)
|
||||||
|
node.append_fragment_slice(fnode)
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
first_elem = first_elem.nextSibling
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __fragmnode_init_desc(self, node: FragmentSlice, e: mdom.Element):
|
||||||
|
node_elem: mdom.Element = e.firstChild
|
||||||
|
while node_elem != None:
|
||||||
|
if hasattr(node_elem, "tagName") and node_elem.tagName == "text-section":
|
||||||
|
line = node_elem.getAttribute("text")
|
||||||
|
node.text_sections.append(line)
|
||||||
|
pass
|
||||||
|
node_elem = node_elem.nextSibling
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
|
||||||
|
def storylines_plait(self, storys: Dict[str, StoryMap]):
|
||||||
|
for snode in storys.values():
|
||||||
|
self.__storyline_plait_within(snode, storys)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __storyline_plait_within(self, story: StoryMap, storys_map: Dict[str, StoryMap]):
|
||||||
|
for fnode in story.slice_list[1:]:
|
||||||
|
if not fnode.is_define_node[0]:
|
||||||
|
sname = fnode.story_refer
|
||||||
|
fname = fnode.fragm_refer
|
||||||
|
target_story = storys_map[sname]
|
||||||
|
target_fragment = target_story.get_fragment_defined(fname)
|
||||||
|
target_fragment.refers_slice[story.story_name] = fnode
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def storyline_list2map(storylines: List[StoryMap]) -> Dict[str, StoryMap]:
|
||||||
|
retv = {}
|
||||||
|
for linst in storylines:
|
||||||
|
retv[linst.story_name] = linst
|
||||||
|
pass
|
||||||
|
return retv
|
|
@ -0,0 +1,53 @@
|
||||||
|
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,):
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue