From 5314985b7b570e14afed2168d9651cc3ec91e05c Mon Sep 17 00:00:00 2001
From: codeboss <2422523675@qq.com>
Date: Mon, 29 Jul 2024 12:01:14 +0800
Subject: [PATCH] 'save-at:1722225674.8203943'
---
.idea/workspace.xml | 90 ++++++++++++++++++---
manage/NovelManage.py | 6 +-
parse/StoryMap.py | 10 +--
parse/StorylineCmp.py | 50 ++++++++++--
parse/__pycache__/StoryMap.cpython-312.pyc | Bin 6516 -> 7756 bytes
5 files changed, 128 insertions(+), 28 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b7fe87f..34bddbc 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,12 +5,10 @@
-
-
-
-
-
+
+
+
@@ -40,18 +38,22 @@
-
-
+
+
@@ -60,12 +62,34 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -95,6 +119,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -117,10 +163,19 @@
+
+
+
+
+
+
+
+
+
-
+
@@ -143,4 +198,15 @@
+
+
+
+
+ file://$PROJECT_DIR$/manage/NovelManage.py
+ 25
+
+
+
+
+
\ No newline at end of file
diff --git a/manage/NovelManage.py b/manage/NovelManage.py
index 08ffa99..7f79613 100644
--- a/manage/NovelManage.py
+++ b/manage/NovelManage.py
@@ -13,15 +13,17 @@ def git_save(target_dir: str):
files_path:List[str] = []
for o in outlist:
modified_flag = r"\tmodified:"
+ new_flag = r"\tnew file:"
if o.startswith(modified_flag):
has_changed = True
files_path.append(o[len(modified_flag):])
- elif o.startswith(r"\tnew file:"):
+ elif o.startswith(new_flag):
has_changed = True
+ files_path.append(o[len(new_flag):])
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()}'")
diff --git a/parse/StoryMap.py b/parse/StoryMap.py
index 7441793..72d4beb 100644
--- a/parse/StoryMap.py
+++ b/parse/StoryMap.py
@@ -4,24 +4,17 @@ 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.fragm_sort_i = 0
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
@@ -45,6 +38,7 @@ class StoryMap:
def append_fragment_slice(self, node: FragmentSlice):
self.slice_list[-1].next_node = node
node.prev_node = self.slice_list[-1]
+ node.fragm_sort_i = len(self.slice_list)
self.slice_list.append(node)
pass
diff --git a/parse/StorylineCmp.py b/parse/StorylineCmp.py
index 5c6e2ab..b1360d0 100644
--- a/parse/StorylineCmp.py
+++ b/parse/StorylineCmp.py
@@ -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
+class ModifyReason(Enum):
+ Removed = 0,
+ Append = 1,
+ Changed = 2,
+ Nothing = 4,
+
+
class CmpTool:
def __init__(self):
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 = []
for story in graph_old.values():
fragments_has_removed = fragments_has_removed + self.__event_remove_check(graph_new, story)
@@ -17,10 +25,16 @@ class CmpTool:
fragments_has_appended = fragments_has_appended + self.__event_append_check(graph_old, story)
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]:
list_retv = []
@@ -50,4 +64,28 @@ class CmpTool:
pass
return list_retv
- def __event_changed_check(self,):
\ No newline at end of file
+ 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
\ No newline at end of file
diff --git a/parse/__pycache__/StoryMap.cpython-312.pyc b/parse/__pycache__/StoryMap.cpython-312.pyc
index fa229177ecdc447102027ae80da9b8b8f864edfe..376af5411c922cd0e069783861d4c40df6b345eb 100644
GIT binary patch
delta 3111
zcmZ`*eQZ=&6~Axhy_q-DH=l1hola>xEp*#g3Y6t@S!fn0tU$LR3oN^I$v7~t?UZ)f
z-1l&WOf73_EQ(V0M!`f)5#tU)O^F)Nf5gNXj7Aw)oyjvMn{^k(n9YNdY@%`XoI4*1
z$=K?oaOcr
zpM$(e((YN3majP~GC!AjK<2H<0_i$k(*2DvB(3OfJ*fMK9oQNc)4o~pNa&QH`7iux
z&xK|WTjLlI<+MJ`-gLAHW9*9KMC26F9D^3o+?GFMB%v>p)!7{05)FNPnAX9{Q~_e3qKQO;{X|&He(Y?I$tZjQ$Qe>|^n8(=zOESduX{o-rvO=Acm!(pEMl
zJuk%A_odbV9&k`|?52JkF0&D#V?;bQIXP}Q4U^Isj&DKI4&*AKIG#2jK~Hev2F6$g
zWR^U1cqQLL#3oQJ9$3Q4jyXW2E)l3~8TkW`k*AF;SnjRjlvyfc`vVrJP7Dc
zU9LpGBdtL62h%=XPWzwe5z_&l7eOubqnWx*g0PX@P-gvf9cZFSW!r3J1HO(HJjdyV
zSGONHnB1SDhJFwNY;`i3$!5%Caw9wM`@D;vD9#%EKbSeW4~BaoC3yMUS8sf9{_FS8
zp1J?cv-iLDh4+8<<K&eobwwjh$523h%MYYJ43kXGv5a)+xpFX9G<9&8D(&mk?D8_pV@t%1%`*q}p
z!B!GzywrcspRg0egNX9Q`Ugo5T8Et21e*xwh5!!4L9XR#1%Y@~1&A#XTbi4`hT0rK
z!jHoJg<#2JfxZr0)n8@3+3%yDc8!79$g&L$$#s~_J`#vsT7S>qYWuk!I32xtymH?F
zONazNI&kS_)+RMEpCT*$;NwwSu*IMtS1tR=zUZ5D3iRauxAO
zSinGRft#ql>Eh7~M_KX_5j@Y$?Sf+$6|JCX`HsctAC%3u6U6UU0TUy}^737b>yQW2uy4ahl
z8jy01oQUu-?aH|z%)yW$sT$_f?wm8{9`k}UGBbuz{Z!csZ4Ws>pe4gB0S1Q1k)B
zMh)p{Euza93|=F&2M5XJnC1|00;NeHXmo%R3}vhoGerSzlKtEuR-n=xrl}E*KX~C+
zz^;7XS+P%Y?deW76Nz#kJ>l}xu!J!U1U(fm)^`-@;o@01cBfu@L}X709Hz#KYG*<1
z%nNtb?ozC|7}E+dZC?6+wiVo2XziU>O6{wQ?K=zYJ8$i}*S>c?P};tGK2Qwy6oNhZ
zL&cd@+Y0an`zn`N2zIc;)zBZ*!k>JZq2uWeBp3!98EGGImb-$+bSKLDk#JZULJo6>
zVwliTB-@|51D{7Bk`3@1SAfhC+aZ_V9Z=a3uN1v>aAEm3Uc)y@)Q+)Dv9_5o+>2c{
zfojpbk-MH-Le}o`;B{#esBZTEeBh@8OUT+$CoE^?cP_^AFBLksED>niUU=Z-NBMK-
zR{w4F_UP^ALjU3NyC+H{Px*31%_`ZzlZ(bda9mgov|4I8u@NK}Nrp@dIgEb*QGf@4
zg&bsnCo+T4dQKG~X$}xN0u6Zj@i=r+16q~{cj0F&3AQoJ>cg^}^Wj>~C&%HQd=|2j
zz5!F_;5QK3Aad$_XZlN_rbqZbo0Cdy&&-K)hl;-D0(^1{Jcm?U!e^X|D8V!P_~EoL
zn~x=gK6X8}dlNzh_e1&hg3CYkT=}QGbz(Aoa$N7DpMzd}Q5i>=*0^l9D){F2JSI?m
x)Kf1+9ugoQ_3jr0&qIRL9(G7VaAAF3zT9UMU>DOj*WHqDZYykrY0&2C{1-*3@c#e+
delta 2147
zcmZWqTTfh76yE1HGt7NB!%!{*L(A<{p|y~rwUnwH?ocN#lc|Pty)b6B93M?HL-ylgzi)UVH7e
z*Iu{z?%?LWmfJp`o4_~x`{!fvAR)iuV(U{%OyT3DmcgpBYf^EY@QI|Kq?`*R9N^CBWY$cnn2N*CTySyAf=TItGMQ5-^)#!bI_Q|o-h=o2w>QhO2)|NBLDPy!03(z72-NJR@Ji8*CZ5StWL`VDln&Sp$avSrhl9HZ4>h}Hm@cuOo6qm@9}nz(aE
z0HrSjTqL==*44&4(LI;spIp`Kq1Y0RpG3Ys*Sed_axO28u&6ZUYJvk0+-7!JIxN((
zbtxu9*kkF9n%%e|+KM?nnYJib6KOLDX&Xz)FA6cXBG=DjY~q^ON293jqJC6BPbgFn
zvE`9$cG8wii_#VpK8vsyp#p(N79T*Xwg3&7Z2$}8k?2u;E1h`)WX&uf$ybXYQVRq~
z-X$sl-^$P?E{dkAn6A7f)Ua=r&x9(LbkwzThk3j(Go^5GUoM1(tSp^9k(_SV^>ij}
z>3TD}?&yH$KXB9w!%T3VYUCN)_!~Y=qA#G2I}sWHv{Ez|bS
zfc+&!nC^PFntF-{xP?08rD7;+*b~?B`F(h}4*)W!R$e`_bmTEn%0icVa)I*uf!KN=
zwi3D<*p*Ww_tnOAwQ=ROb+u)+^RBulS5tTScrF;ud4qWm9Lal0Fw7l@|1TL7uPLU1
zNBa;iy8#m0lhKJg2$=O!GV-FL_?CwX1W4X5DZbUV0s)eDJC*RNnkPWkqMJyH0l@R4
zOQ8y3h3$2JD$jZ}?+wM%B?w2@A@4%Sb|iU|YDzH@z3c~XQymt`h04?2L&N&XBsGm;
zD4(b4ImF6+?|XR7V01?X*5C=V8@?;uaVS$vChrVQrq~5`c-*jFnlz@2jAb639ZrtN
zp;_q(-15R!w`I}v$c$xxelxr8ZxW8PKmGNNeo!!vu|TMr9S(Gq@$0aFSiL9076ZAX
zgRtNiK}%+-r8)R@bO^=62>5baN@pzE1>DvH(FQ$*aDaUo)P+}>J2d0x<`3Wj0R{;^
z$aNPc+*L9svc1kQn^!$m_pGNAW=={8TT_+ZWDhE$EKn%Z7IjO
zFBiNxC)-MM(w1?hIq3-AIf}p?=4ruV=IN&faR2p=-HE*Im;|vo#`ah0^LY;m>{#yn
z*Q
zUBzh!Bp-Gtk>%l)T_2q(5Mc8`maA!aJ_L=}nkPWktgq+3nkyiiZ+0r}t8Lhm?KgXG
z4SX|zec4{@OT0u2v4Lnz=wnmSzJ1&$tXY2lHpl*O9h}OhW+sipbOu!L&)4i>52Lkv
nWFfTJxk-R*`on^6@z^E-@}xa1gdYJHe$w70v_B>Q{N8^6pTqII