From cf41711716a0250dc38e2db43618b8c91a5e359b Mon Sep 17 00:00:00 2001 From: El Mau Date: Tue, 8 Feb 2022 23:23:31 -0600 Subject: [PATCH] search in reverse --- extension/ZAZFunctions_v0.2.0.oxt | Bin 54322 -> 54240 bytes source/ZAZFunctions.py | 39 ++++++++++++++---------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/extension/ZAZFunctions_v0.2.0.oxt b/extension/ZAZFunctions_v0.2.0.oxt index 8c83ed9868413d057854c0c64f30cb668d985238..7fa668cf281c9a4791209b785f70d50019032a98 100644 GIT binary patch delta 1090 zcmdnAg89L6W}X0VW)=|!1_lm>&pS8rOkuA7u+t+%<<|wC7A6LU!|V(U{6NVl$0)bb zyyTM1{Jdhlg37s}r}J(b2<&;SE%xG|&;pLLR~`5=A1&Iq#6d{JvB@D}NvO{hC04s2 z_4c~z=~WR^at}I|ZaDh%OwkUR!pgfExer^Vb#jjEo;X>n;_iZs0Qae3rXE`)yJqct z(_CAhGIet6Q!l9(7y0|A_up?%5OIC|y5?)a{#`qx|L(14a-C5T zxWdZVFYTDo+?l*W&o}8@FPf+}Ws|@e36ATXrdPSjb<@j`QBlg;xT|5xz6TZ2gqUsk@?=rfs|NWUE$Z z?u3_h1|gU1_i&{*Nbd*~Iv!iXD$6KdU^gi`QRLGU!(XiL%sI~PzN_)F{Ai7&l}6^0 z9I+iOha|o2*0@cs@BOp?LWW-Mo*hAluBNPh`E0YD&wsyLPb5Bu{k2T^dBZ{S?4mh( zf8^9IWT)L+T7UcDi9_pO_#3aOZkVn8f>ksp%2&_(%e^T(wicdQ7$jwJ^SC(c($#^+ z-g3F6s&;p8U%s9`U%kY6(l%H5?|qL79&Y|0we!E%DaS*Zybtf~HtoAr-;wtBXa6!A zzS(oSN_!9NNb}W+_#0$&Lod-gDoEmrY=Qsv#I&i+z3*4^PdT3=t99q@p~&ykv;Xbd zSbOcId+myQ)fGS1JUUn6AA8N%qTY|6)BWJ@1J`7Of6fon-|%bAkI7L1GxlDdx3p#1 zD~G+&4JV6=?w?iZQ7=ytTJ|RYzL=NA+!vK)FeN7%0>P9&%j(TNsg7hlm(dlT^JYyffNiZX>?~}V2D7; z6h$dX0p5&EBFwP7EpS{@#n?)P>r9w04Ni9Ve}oW+uI8uHvj<2#?W~H delta 1099 zcmaE`oO#myW2MMOku8<-sTaKV5<528WRIU3I_uNKTtBtG0Lqp zFS#T$Kd)G?pmJ%bZ}wvYfxW-OIlc)<$83ISc)|JBvYdpMPPcWJDoR|HGfzrA`C{?x zXB+m{y8jECd!hBK;zqapdp2i#OxLVgV)Udn^MucVSyM%ezU*R-Yvkfm^;SBda=<%l zGP7;HN~`G1#Gs5zi{{Upe%^epAxG2K(p^i+sOK%9rwHN^8VMWMUxIi zs-1R;o|xerx~ROt?zByOcchGB>amsAQe@QMn5s<=aelM9L(I|P!^wpTnWtEcGo`W~ zxcV4vJ|26??%cEmoTd-nKPUBUY@?&yuD{G z-p;n_mg{uS?^o_2wQ6q&nWYS%)4w*U4^ zf_!Eal&S92-Dq6%x85`RSiQDS$(fIS|K?R#Mn5;Y5*;;lr*XxF?5r1;_I|Z^b11xk zRdRV=%j-s;Cl7YHAGp_|sN5RTlGu26rsEAE5z`y4r8hW&{qLE@Z-4UW(CToJ>z1;8 zZ5Gpax6OH3RsLdHq3$8Km&@An9-lb>+E1%&!l8h^3(}`dD{f1)HD_F{U%2iB=j`8& zGV9LYa2Qeg_nS+5As5Zz`~ITdy`FLw0EnhduALt4nVBze;`awE9(0 zkIJte*(K*IEZ%Wmx%u2~-Y37!h6_L6Se9C%ds*g3g!Gq4<86-wrfuP})QvCl`o_J< zy|9qGvnKb1Rn3QWuhKuSJfqitc8*8=to*;g_U2*5rDG{J?~*T_`=arK zJAfN0KWq+WTg1Y2ciZOgT;~}<^a&nW6%hU0Kx7_>{(CMCBtALzf;Wg-b-^D*{k~wy zhnkBfJ6+V5zYEM*ljK<0OId(9%7uYJ5JB0-3>mS%%5^{AAwq;*%XN^MFMBF3T`3p1k3*=;VgWf?)T4 Y4{0or0vZIus0M!ks?%b#zX-Ao0RIi{5C8xG diff --git a/source/ZAZFunctions.py b/source/ZAZFunctions.py index 7718625..200c0d9 100644 --- a/source/ZAZFunctions.py +++ b/source/ZAZFunctions.py @@ -24,9 +24,13 @@ class ZAZFunctions(unohelper.Base, XZAZFunctions): def zxlookup(self, lookup_value, lookup_array, return_array, if_not_found, match_mode, search_mode): - value = None - # The python default value not set in custom functions + if match_mode is None: + match_mode = 0 + if search_mode is None: + search_mode = 1 + + value = None # ~ print('Columns', lookup_array.Columns.Count) # ~ print('Rows', lookup_array.Rows.Count) @@ -34,32 +38,25 @@ class ZAZFunctions(unohelper.Base, XZAZFunctions): source = lookup_array.DataArray target = return_array.DataArray - index = next((i for i, v in enumerate(source) if v[0] == lookup_value), None) - if not index is None: - value = (target[index],) + if search_mode == 1: + index = next((i for i, v in enumerate(source) if v[0] == lookup_value), None) + elif search_mode == -1: + index = next((i for i, v in enumerate(reversed(source)) if v[0] == lookup_value), None) - # ~ horizontal = False - # ~ if len(source[0]) == 1: - # ~ source = [r[0] for r in source] - # ~ else: - # ~ horizontal = True - # ~ source = source[0] - - # ~ if lookup_value in source: - # ~ index = source.index(lookup_value) - # ~ if horizontal: - # ~ value = ((return_array[0][index],),) - # ~ else: - # ~ value = (return_array[index],) - - if value is None: - source = tuple(map(lambda x: x[0], source)) + if index is None: + if match_mode in (-1, 1, 2): + source = map(lambda x: x[0], source)) + if search_mode == -1: + source = reversed(source) + source = tuple(source) if match_mode == -1: index = bisect.bisect_right(source, lookup_value) value = (target[index - 1],) elif match_mode == 1: index = bisect.bisect_left(source, lookup_value) value = (target[index],) + else: + value = (target[index],) if value is None and if_not_found: value = ((if_not_found,),)