Compare commits

..

No commits in common. "50e84af838525f8604bf8368fbbfc20d7bf6edc4" and "a6222ab1882c11833a92181a6ef32715a6808693" have entirely different histories.

8 changed files with 26 additions and 187 deletions

View File

@ -5,8 +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$/manage/NovelManage.py" beforeDir="false" afterPath="$PROJECT_DIR$/manage/NovelManage.py" 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" />
@ -36,22 +40,18 @@
</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": "Run",
"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": "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" selected="Python.NovelManage"> <component name="RunManager" selected="Python.entry">
<configuration name="MileStone" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true"> <configuration name="MergeView" 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,34 +60,12 @@
<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$/manage" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/frame" />
<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$/manage/MileStone.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/frame/MergeView.py" />
<option name="PARAMETERS" value="milestone:new" /> <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="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" />
@ -117,28 +95,6 @@
<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="" />
@ -161,19 +117,10 @@
<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.StoryMap" /> <item itemvalue="Python.MergeView" />
<item itemvalue="Python.ReferView" /> <item itemvalue="Python.ReferView" />
</list> </list>
</recent_temporary> </recent_temporary>

View File

@ -1,21 +0,0 @@
import sys
import shutil as cmd
base_store_path = r"E:\baseline_core\milestone.xast"
current_store_path = r"E:\storyline.xast"
def milestone_new(f_from: str, f_to: str) -> str:
return cmd.copy2(f_from, f_to)
if __name__ == "__main__":
print(sys.argv)
if len(sys.argv) <= 1:
exit(0)
# milestone:new
if "".join(sys.argv[1:]) == "milestone:new":
milestone_new(current_store_path, base_store_path)
pass

View File

@ -1,45 +0,0 @@
import sys, os
import subprocess as xsub
import time
from typing import List
def git_save(target_dir: str):
retls = xsub.run("git status", shell=True, capture_output=True)
outlist = str(retls.stdout).split(r'\n')
has_changed:bool = False
files_path:List[str] = []
for o in outlist:
modified_flag = r"\tmodified:"
new_flag = r"\tnew file:"
delete_flag = r"\tdeleted:"
if o.startswith(modified_flag):
has_changed = True
files_path.append(o[len(modified_flag):])
elif o.startswith(new_flag):
has_changed = True
files_path.append(o[len(new_flag):])
elif o.startswith(delete_flag):
has_changed = True
files_path.append(o[len(delete_flag):])
if has_changed:
xsub.run(f"git add {" ".join(files_path)}", shell=True)
xsub.run(f"git commit -m 'save-at:{time.time()}'")
def nsc_compile(target_dir: str):
retls = xsub.run("nsc --path ./ --dest E:/", shell=True)
if __name__ == "__main__":
print(sys.argv)
cmd_line = ":".join(sys.argv[1:])
#wnss:-cmp
if cmd_line == "wnss:-cmp":
git_save(os.getcwd())
nsc_compile(os.getcwd())

View File

View File

@ -1,10 +0,0 @@
@echo off
for %%i in (%0) do (
set "FolderPath=%%~dpi"
)
set "ScriptName=NovelManage.py"
set ScriptPath=%FolderPath%%ScriptName%
@echo on
python %ScriptPath% wnss -cmp

View File

@ -4,17 +4,24 @@ 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
@ -38,7 +45,6 @@ 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

View File

@ -1,20 +1,12 @@
from parse.StoryMap import StoryMap, FragmentSlice from parse.StoryMap import StoryMap, ModifyReason, 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]) -> Dict[ModifyReason, FragmentSlice]: def graph_compare(self, graph_new: Dict[str, StoryMap], graph_old: Dict[str, StoryMap]):
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)
@ -25,16 +17,10 @@ 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
return {
ModifyReason.Removed: fragments_has_removed,
ModifyReason.Append: fragments_has_appended, pass
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 = []
@ -64,28 +50,4 @@ class CmpTool:
pass pass
return list_retv return list_retv
def __event_changed_check(self, graph_old: Dict[str, StoryMap], story_new: StoryMap) -> List[FragmentSlice]: def __event_changed_check(self,):
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