'save-at:1722225674.8203943'
This commit is contained in:
parent
03b8ad6c50
commit
5314985b7b
|
@ -5,12 +5,10 @@
|
||||||
</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" />
|
<change beforePath="$PROJECT_DIR$/manage/NovelManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/manage/NovelManage.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/parse/StoryMap.py" beforeDir="false" afterPath="$PROJECT_DIR$/parse/StoryMap.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/parse/StorylineCmp.py" beforeDir="false" afterPath="$PROJECT_DIR$/parse/StorylineCmp.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" />
|
||||||
|
@ -40,18 +38,22 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
|
"Python.CompareWindow.executor": "Run",
|
||||||
"Python.MergeView.executor": "Run",
|
"Python.MergeView.executor": "Run",
|
||||||
|
"Python.MileStone.executor": "Run",
|
||||||
|
"Python.NovelManage.executor": "Debug",
|
||||||
"Python.ReferView.executor": "Run",
|
"Python.ReferView.executor": "Run",
|
||||||
|
"Python.StoryMap.executor": "Run",
|
||||||
"Python.ast_load.executor": "Debug",
|
"Python.ast_load.executor": "Debug",
|
||||||
"Python.entry.executor": "Debug",
|
"Python.entry.executor": "Run",
|
||||||
"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" selected="Python.entry">
|
<component name="RunManager" selected="Python.NovelManage">
|
||||||
<configuration name="MergeView" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="MileStone" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="StoryTools" />
|
<module name="StoryTools" />
|
||||||
<option name="ENV_FILES" value="" />
|
<option name="ENV_FILES" value="" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
@ -60,12 +62,34 @@
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/frame" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/manage" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/frame/MergeView.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/manage/MileStone.py" />
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="milestone:new" />
|
||||||
|
<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="NovelManage" 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$/manage" />
|
||||||
|
<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$/manage/NovelManage.py" />
|
||||||
|
<option name="PARAMETERS" value="wnss -cmp" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
<option name="MODULE_MODE" value="false" />
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
@ -95,6 +119,28 @@
|
||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration name="StoryMap" 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$/parse" />
|
||||||
|
<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$/parse/StoryMap.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="" />
|
||||||
|
@ -117,10 +163,19 @@
|
||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<list>
|
||||||
|
<item itemvalue="Python.NovelManage" />
|
||||||
|
<item itemvalue="Python.entry" />
|
||||||
|
<item itemvalue="Python.MileStone" />
|
||||||
|
<item itemvalue="Python.ReferView" />
|
||||||
|
<item itemvalue="Python.StoryMap" />
|
||||||
|
</list>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
|
<item itemvalue="Python.NovelManage" />
|
||||||
|
<item itemvalue="Python.MileStone" />
|
||||||
<item itemvalue="Python.entry" />
|
<item itemvalue="Python.entry" />
|
||||||
<item itemvalue="Python.MergeView" />
|
<item itemvalue="Python.StoryMap" />
|
||||||
<item itemvalue="Python.ReferView" />
|
<item itemvalue="Python.ReferView" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
|
@ -143,4 +198,15 @@
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="XDebuggerManager">
|
||||||
|
<breakpoint-manager>
|
||||||
|
<breakpoints>
|
||||||
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
|
<url>file://$PROJECT_DIR$/manage/NovelManage.py</url>
|
||||||
|
<line>25</line>
|
||||||
|
<option name="timeStamp" value="13" />
|
||||||
|
</line-breakpoint>
|
||||||
|
</breakpoints>
|
||||||
|
</breakpoint-manager>
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -13,15 +13,17 @@ def git_save(target_dir: str):
|
||||||
files_path:List[str] = []
|
files_path:List[str] = []
|
||||||
for o in outlist:
|
for o in outlist:
|
||||||
modified_flag = r"\tmodified:"
|
modified_flag = r"\tmodified:"
|
||||||
|
new_flag = r"\tnew file:"
|
||||||
if o.startswith(modified_flag):
|
if o.startswith(modified_flag):
|
||||||
has_changed = True
|
has_changed = True
|
||||||
files_path.append(o[len(modified_flag):])
|
files_path.append(o[len(modified_flag):])
|
||||||
|
|
||||||
elif o.startswith(r"\tnew file:"):
|
elif o.startswith(new_flag):
|
||||||
has_changed = True
|
has_changed = True
|
||||||
|
files_path.append(o[len(new_flag):])
|
||||||
|
|
||||||
if has_changed:
|
if has_changed:
|
||||||
xsub.run("git add .", shell=True)
|
xsub.run(f"git add {" ".join(files_path)}", shell=True)
|
||||||
xsub.run(f"git commit -m 'save-at:{time.time()}'")
|
xsub.run(f"git commit -m 'save-at:{time.time()}'")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,24 +4,17 @@ from enum import Enum
|
||||||
from frame.ReferView import EmptyNode, MemoryNode
|
from frame.ReferView import EmptyNode, MemoryNode
|
||||||
|
|
||||||
|
|
||||||
class ModifyReason(Enum):
|
|
||||||
Removed = 0,
|
|
||||||
Append = 1,
|
|
||||||
Changed = 2,
|
|
||||||
Nothing = 4,
|
|
||||||
|
|
||||||
|
|
||||||
class FragmentSlice(EmptyNode):
|
class FragmentSlice(EmptyNode):
|
||||||
def __init__(self, def_mark: bool = False, name: str= ""):
|
def __init__(self, def_mark: bool = False, name: str= ""):
|
||||||
self.is_define_node = (def_mark, name)
|
self.is_define_node = (def_mark, name)
|
||||||
self.story_refer = ""
|
self.story_refer = ""
|
||||||
self.fragm_refer = ""
|
self.fragm_refer = ""
|
||||||
|
self.fragm_sort_i = 0
|
||||||
|
|
||||||
self.prev_node: 'FragmentSlice' = None # 上游节点
|
self.prev_node: 'FragmentSlice' = None # 上游节点
|
||||||
self.next_node: 'FragmentSlice' = None # 下游节点
|
self.next_node: 'FragmentSlice' = None # 下游节点
|
||||||
self.refers_slice: Dict[str, 'FragmentSlice'] = {} # 引用切面
|
self.refers_slice: Dict[str, 'FragmentSlice'] = {} # 引用切面
|
||||||
|
|
||||||
self.changed_prev_nodes: List[Tuple[ModifyReason, 'FragmentSlice']] = [] # 变更的上游节点
|
|
||||||
self.text_sections: List[str] = [] # 文本段落
|
self.text_sections: List[str] = [] # 文本段落
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -45,6 +38,7 @@ class StoryMap:
|
||||||
def append_fragment_slice(self, node: FragmentSlice):
|
def append_fragment_slice(self, node: FragmentSlice):
|
||||||
self.slice_list[-1].next_node = node
|
self.slice_list[-1].next_node = node
|
||||||
node.prev_node = self.slice_list[-1]
|
node.prev_node = self.slice_list[-1]
|
||||||
|
node.fragm_sort_i = len(self.slice_list)
|
||||||
self.slice_list.append(node)
|
self.slice_list.append(node)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
from parse.StoryMap import StoryMap, ModifyReason, FragmentSlice
|
from parse.StoryMap import StoryMap, FragmentSlice
|
||||||
|
from enum import Enum
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
|
|
||||||
|
class ModifyReason(Enum):
|
||||||
|
Removed = 0,
|
||||||
|
Append = 1,
|
||||||
|
Changed = 2,
|
||||||
|
Nothing = 4,
|
||||||
|
|
||||||
|
|
||||||
class CmpTool:
|
class CmpTool:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def graph_compare(self, graph_new: Dict[str, StoryMap], graph_old: Dict[str, StoryMap]):
|
def graph_compare(self, graph_new: Dict[str, StoryMap], graph_old: Dict[str, StoryMap]) -> Dict[ModifyReason, FragmentSlice]:
|
||||||
fragments_has_removed = []
|
fragments_has_removed = []
|
||||||
for story in graph_old.values():
|
for story in graph_old.values():
|
||||||
fragments_has_removed = fragments_has_removed + self.__event_remove_check(graph_new, story)
|
fragments_has_removed = fragments_has_removed + self.__event_remove_check(graph_new, story)
|
||||||
|
@ -17,11 +25,17 @@ class CmpTool:
|
||||||
fragments_has_appended = fragments_has_appended + self.__event_append_check(graph_old, story)
|
fragments_has_appended = fragments_has_appended + self.__event_append_check(graph_old, story)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
fragments_has_changed = []
|
||||||
|
for story in graph_new.values():
|
||||||
|
fragments_has_changed = fragments_has_changed + self.__event_changed_check(graph_old, story)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
return {
|
||||||
|
ModifyReason.Removed: fragments_has_removed,
|
||||||
|
ModifyReason.Append: fragments_has_appended,
|
||||||
|
ModifyReason.Changed: fragments_has_changed,
|
||||||
|
}
|
||||||
|
|
||||||
def __event_remove_check(self, graph_new: Dict[str, StoryMap], story_old: StoryMap) -> List[FragmentSlice]:
|
def __event_remove_check(self, graph_new: Dict[str, StoryMap], story_old: StoryMap) -> List[FragmentSlice]:
|
||||||
list_retv = []
|
list_retv = []
|
||||||
for slice in story_old.slice_list[1:]:
|
for slice in story_old.slice_list[1:]:
|
||||||
|
@ -50,4 +64,28 @@ class CmpTool:
|
||||||
pass
|
pass
|
||||||
return list_retv
|
return list_retv
|
||||||
|
|
||||||
def __event_changed_check(self,):
|
def __event_changed_check(self, graph_old: Dict[str, StoryMap], story_new: StoryMap) -> List[FragmentSlice]:
|
||||||
|
story_old = graph_old[story_new.story_name]
|
||||||
|
if story_old is not None:
|
||||||
|
return self.__event_changed_chack_for(story_old, story_new)
|
||||||
|
return []
|
||||||
|
|
||||||
|
def __event_changed_chack_for(self, story_old: StoryMap, story_new: StoryMap) -> List[FragmentSlice]:
|
||||||
|
list_retv = []
|
||||||
|
for fragm_curr in story_new.slice_list[1:]:
|
||||||
|
if fragm_curr.is_define_node[0]:
|
||||||
|
fragm_prev = story_old.get_fragment_defined(fragm_curr.is_define_node[1])
|
||||||
|
if fragm_prev is not None:
|
||||||
|
if fragm_curr.fragm_sort_i != fragm_prev.fragm_sort_i:
|
||||||
|
list_retv.append(fragm_curr)
|
||||||
|
pass
|
||||||
|
|
||||||
|
if len(fragm_curr.text_sections) != len(fragm_prev.text_sections):
|
||||||
|
list_retv.append(fragm_curr)
|
||||||
|
elif fragm_curr.text_sections != fragm_prev.text_sections:
|
||||||
|
list_retv.append(fragm_curr)
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
return list_retv
|
Binary file not shown.
Loading…
Reference in New Issue