From c2c0f3ec3c2940fde97a39324133ea23a3c75c8a Mon Sep 17 00:00:00 2001 From: Amber Date: Wed, 24 Jan 2024 14:46:00 +0100 Subject: [PATCH] tree refactoring --- src/__pycache__/tree_find.cpython-39.pyc | Bin 2804 -> 3757 bytes src/tree_find.py | 57 +++++++++++++++++------ 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/__pycache__/tree_find.cpython-39.pyc b/src/__pycache__/tree_find.cpython-39.pyc index 6e3c145678d318be8f435191bca059d7d69081ce..37b2d5dd29c564296ff3c7a55f5af8f61a48f13a 100644 GIT binary patch literal 3757 zcmaJ@&u<&Y6`q;>!6ijfvSSOj+qmmAX-gxO(xOd^Ks8*)avZ==4cS4Fg_`Y#vy@gL zcd41BT@yKF)d7lkvy{%Zu$10AywDokd(7BDQKS2?*fJ+t#$pb54JuZc`p7X$#wsfAe zz>%)3p?0Mw>!@q8A(v2lvMF1r>#~hqLN3b{>}nVZ7vx2>m*i_u{8HJR>2WVfWwgW@ zYxqdFhmnc~)T)xsBb5)Md~Y@|8&*lW`<|cg#s0~Xp2`OP)4im-=jWNf8>g{~^4Q2- z-2TcQ$=lai8s>N*e-IBojg|i+8Z`qd9;#T!X&&WCmUhn7I2-2r9QiWo=9Ru?K`&EA z`E$fVYL{#=OVoCd-$&LzKp}a-Lbl6L@`Or}Tl;pw3SI~)zOV>5cw=j;WG{GW(|H}I ztS5Oq2-9c~mo;2s)X#O!3@fS^wJB%Bu(-#>{z9(<9;uw&!1Q|vEl_&7g2rv z*7{yHh}Zk0ZnTc4mgdpcwd$_Zt&GIA;WM>@wM)pFq%-bvSGat9`LzAlW=D1ft(hhl z_59+0MW^7BU&V#@*=It%Q}82x%qF4`N4R!wCH$CknzfIdLYOu`a;0_5ha0F62hPT`y*-Kln%XLjLZ^s2#fH|u9Agk=X& zp2w>6x_e1qsyHp}{Mj%rx$JnVg?p5CHyb`H-O*42pNb5uKo+cYqv0@4Wohlkd3l*k z5~i7qLlt*NN+(a^{=n{$KZlXhrUkkO3g)N9oGE(#jb zS5PqC<{olWw1vl;RGa?zjRiZMt5O%vJ5SW63mLSMcswx~Wo8`l2%y~RSmyYkJ_n$A zfDSj8tCTeAlBQ*Se(d+r)x@C;I*wP**KNUjYFIl5(Gzs0AQCYDO+W|~d(8E9coR5o z10+lJRdClMj8wD3cPselyVBmRW(Z1e0!r+N7dF5qcErS)xP_zcLxS5Af^qoZ!Ts5e zjx+wpl!!jeeHG^;m1;lo^U<&$zc;6-UZQmFKZ*LI*ng~0Bt5?e_5%xLJ)ey2KTSY} z#z*9I=tb!wCIryvp#3fDIiSg#Q3cEMrk z=EMR%ENN}9gP$f0cBj#QPCyPsB@;J?%@1kpZ@@uq;uYSJjWgX#gSLEl)r=ELfw0q;mjfGby8Yee>gsf=~{Z@EK z4)4NE|11vZY;FV?`*%bs*4`<3_Y4}!#zsHUc{dvjZ~Y!}{)f!QKY7{s=F8E!8g=uv zjegdR`uY|cv%QZyb@e@LopK5Ni4}_LaXK29I6)B)8uXR*%|CSGA^q{C)sItk4KtnP zikpb2)mtRWt-jG<>D1Zkb(*GMy5woehk-LB?nPyOUbk{M^(L*FGPdqV+Jrb~ufAd& z?3D0dVVC|T3TAoYny|Tz?D2-M;TN7*L7P0pB~Rf(H2Ec(7prJr!7RMy^>2N+1>&@D z44Kh54*eB{I0-utY9Q<|!G}e^pt_C)9b3JP$}qY4=M*^~sGdHopq0i?LqiMZxAdrM z%&_<^l@3K%`98Ls1Pr*+_~L@LZA- z^i9+VAU?CyHhd4RpTtk&VMKLz}j^gpaa;fXf3|&b*;H`_<1!K&NLiVI}_pA7V$0|1$kz&c^9J z(%iVzL8^jtx;lm9)3->{dEEOgqD+ijNiiiw&-ml2n3>$d#|pTo5uqr$1ewtN)i06s75K1)-!7y&K=3Ve?Z`J#;=eC#4{8pzCxF(|1inOkx nMB1e&oKX}UEBe^f8&ptiZT6jaVCijC*SSTkZQ>^%KkEMhy<~9@ delta 1584 zcmZux&2Jk;6rY)${q%aBT5XBb222IC%ST$O3Iv1_iL?Sy`9eh`E3jCeO}oKfZ)VpB zqFGsLazz5|KVTmLp&mGJ>4Cq16Q{i+wU>$mM}&B9?UXcPRx|T<=FM;3y!U(Wr`5mC zc)fbvAJw2VYWp5W8!4r>DH4!71V)+(wyPmVA_Csn1J0%EDm~_l99<$}k-dvQ%0CQ(8d~#ZeXnpv2Q~u+z2EtS7Ui zm)(^$(2)4l?}=;_kJu}x>hNPgPjMjBpv6V)rO8v)9m0kJ546CxUGfE!mlU0XKQb24 z8Kty^YU%f(m~}sLf-r z3)SMWcJ+)|J)ktkiRfja)W9(57Vq#&A93lyPs!tv2xSw*u2VUve>WNk*+9i=SVCzT z2J}RF8U{i=_*~{Oi@G=$zwxbgpLTq$QtaBh=_n2|2%>aB-KW)6CooHU2O=Ec^(#O3 z^qjWQh}$=PCZ7SJtXJD}Yr@z!rC0o8v}m(fHdjxdFz-AZc((Y^eD_5L(osXpP3RS2 zJPIKpQ!)c57eAV*+x}ko|a_|sS~7`9QQNX!tLjAo5m$gx_W}xFvZ1r$9?lT++NT( z9rV(9);`UTa;f6dG1O~C;Cw#8*B><`4(4!0mN!5^vOu0fj&hg-mQzL33mN3!0c0YU z7oY=yEGD~b_GAr8&c4$bwHF1(*X0$!npcrmK`Qk`Mse0%0%NwqU`LLIi-!X5F(D;t zo$$PT9oBl#)2imuCgs$kob5M{7t6H@x#Qc#gZc}%B$lZv9c2|JjK$m*1Uq)Ye@Sk` y2D%`{h*-?kt%k*|v({_H4e#<>t9T6Sr9{2|11PQa;Yf@J;dOLuicoDR5B~!51Xqm! diff --git a/src/tree_find.py b/src/tree_find.py index b82ff9e..8ae07f6 100644 --- a/src/tree_find.py +++ b/src/tree_find.py @@ -2,16 +2,24 @@ from colors import RED, YELLOW, GREEN, CYAN , BLUE, PURPLE from tree import NerdTree class NerdTreeFind(NerdTree): + ''' + @param startpath string: the startpath from which to generate + the json_tree member (the tree representation) + @param opts dict: the opts for the tree representation + ''' - def __init__(self, startpath, item_name, opts={}): - self.item_name = item_name + def __init__(self, startpath, opts={}): + self.item_name = '' self.results = [] + ## computed tree for find + self.json_tree_find = {} NerdTree.__init__(self, startpath, opts=opts) def find_node_recursively(self, node): if node['name'] == self.item_name: - node.update({'color_formatter' : YELLOW}) - self.results.append(node) + node_copy = node.copy() + node_copy.update({'color_formatter' : YELLOW}) + self.results.append(node_copy) children = node.get('children') or [] @@ -20,8 +28,9 @@ class NerdTreeFind(NerdTree): self.find_node_recursively(item_child) else: if item_child['name'] == self.item_name: - item_child.update({'color_formatter' : YELLOW}) - self.results.append(item_child) + item_child_copy = item_child.copy() + item_child_copy.update({'color_formatter' : YELLOW}) + self.results.append(item_child_copy) def find_node(self): self.find_node_recursively(self.json_tree) @@ -49,12 +58,12 @@ class NerdTreeFind(NerdTree): return (False, []) - def find_tree_struct(self, item_name): + def find_tree_struct(self): ''' ''' results = self.find_node() - dont_show_children_nodes = self.opts['dont_show_children_nodes'] if self.opts.get('dont_show_children_nodes') else False + dont_show_children_nodes = self.find_opts['dont_show_children_nodes'] if self.find_opts.get('dont_show_children_nodes') else False if not results: return {} @@ -94,11 +103,31 @@ class NerdTreeFind(NerdTree): return tree_struct - def print(self): - self.tree_struct = tree_struct = self.find_tree_struct(self.item_name) - if not tree_struct: - print('No results') - return + def reset(self, new_item_name, new_opts): + self.find_opts = new_opts + self.results = [] + self.item_name = new_item_name + self.json_tree_find = {} - print(self.tree_from_struct(self.tree_struct)) + def print(self, item_name='', opts={}): + if not item_name and not self.item_name: + print('Please use a valid search string') + return + + if item_name != self.item_name or self.find_opts != opts: + self.reset(item_name, opts) + self.json_tree_find = self.find_tree_struct() + + if not self.json_tree_find: + print('No results') + return + + print(self.tree_from_struct(self.json_tree_find)) + + def find(self, item_name, opts={}): + ''' + @param item_name the string to search in the tree + @param opts dict for the find option + ''' + return self.print(item_name, opts=opts)