From 1e9108bee5f4a143377c5e857d44fc6fe4d27731 Mon Sep 17 00:00:00 2001 From: shihao <3127647737@qq.com> Date: Fri, 26 Dec 2025 18:49:28 +0800 Subject: [PATCH] =?UTF-8?q?feta:=E4=BC=98=E5=8C=96UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pz_config/__pycache__/parsers.cpython-311.pyc | Bin 13975 -> 14913 bytes pz_config/parsers.py | 29 +++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/pz_config/__pycache__/parsers.cpython-311.pyc b/pz_config/__pycache__/parsers.cpython-311.pyc index 3182419b12cda612e65478d8b52cc14e131bdeb0..92f31c2adb5e7a99b3492d1a4c51993b2bc814ff 100644 GIT binary patch delta 1889 zcmaJ?Z){Ul6o2onZ~gygvB&F}~#edfvI` zo_p@^{O;{i>aJ}2%xX1J*s;Gj({y)Jz<9yG}N)hf!ZO$bR| zHAxdmK~4%HFRArONk+nis!IxztQy7yF)qkFLP40pN^%s*s*x8bQ#^_i|2}Zn@nRgg zrfaEtYN^N5LX4y{$ms+xMi37PMP8*PRiBE=v2ij+3o4yb>k|A0G(;w$mtiKGjGpF` zl7-l98y*CmR&9}qD3bU{td<>}AkGkZrAtJh(=*hXg|alSQ8dd{?OU?)gJ;@ihVI)N z<}c=V744m6d*{rN2M%||(NS`A6dk^@!?#8`SkEJXtgdQtTs<~-Y<75lI7{DmHsz)& zE^o=@U2Z74{AHKF=nRydfvmo2Zz5|L8><%XzS)*NKifOso9`}7o84;^V{9zAmK#3V zR`GO~Jl#dl?y_h1&9f!XK5guQh5Mar&7Uc9?PacgjnW%E8q6Nb4rI?(om-YVu65)+ z3!RId*-({hTpGMKxG=OhlpU-Fx^B`p2EPj3(XWJWhf9H%R-NG-iOol^?_3O4obA&k zXM543DY0pT+2HwI!?NSTig-rQDWTCp>yO1jpBFRo@b$Pnh?=J zu#ON=>rqX8tfmoMa_{g%kI`-bxLJ?^0B#VU3yp$p2H*fL;kMSD;~+!TF+n6Lh-V^1 z;wfH~C6y&Y=BH2?Mol2ah?tIuNtKDER3?$q3Pl$n4G0*)VMBcY2LPaYbRJ-efaD^8 z7lJN)ueF(dpL~qn`n5G_p#FAAw!3y#?mm z0Q~?!Albgmr=$%$YP4yK=pg7RtsOO5KLGCrZsGF^KHJrO5C}$D0;*Y#o=)-+aw)_T zXcpW+FPZ~*4+5BUiky3XOjcPWoEeuNvy2~ho$dolRpYs6a*~gbD?l}92S37#PkFB0 zF19gYijPMmUY1EmB{WPX;>*Ed_Df=Xd+X;QW__9xKotls4sAC+dc;>>+lw}!ZRje# z+T)==#4A0+K}~fZL%2q*8!Sy{Pgq0HS_I3WG!E=(Hr*j6{1r+E@yMQsjcxSvYt&{q KOyk2Z9RCMYTIWFk delta 1050 zcmY+D-)j?D6vyXIXOcFZG-FLMP1h#DA2Ai%CWt$NHK=u4#9u{MP}De0hBoa?67HS4 zwx(KHm4HR-o?WW4i#{nL{-XW^`XczSv{En(3WB~WQ4ql=?@2`T!u{OuIdkUDo$r}> zY|mOvx4d4Dz(=ZgcNRJxHa$_ApYd>3C<;u>kbOc{m?UsdT#AUCHaInMN_iyilXh)#!p6TU28e zL6U1INw1Wq>Hhha_=EKeingd|B~tdO{Pu>Hvf?kdhprD@8@i!i9r<^p-awan`1?L_$_bB8Td~DxIEx%?LagH4zro8$Qp8lq4*0Y#MN;s4=Rjl-E7FJz2g8pe9HvV!F~l(u13l3KFFXC@4SeWKau?!V z`$-ngcRe_G5vwk7#0V{*rl>0yq;lB12yza$~I2e^f=c3 zfk0d63AohVrDD(N1R{y(ga5mO-POlP7}q1b9I+^^x_1^6KUj$2NeIN_Q5)qc4yV!9 z2TdczY&|_nPh%S0rBjGAP>8p dict[str, str] | None: return None choices: dict[str, str] = {} - for line in comment_text.splitlines(): - m = re.match(r"^\s*(\d+)\s*=\s*(.+?)\s*$", line) - if not m: - continue - choices[m.group(1)] = m.group(2) + token_re = re.compile(r"(\d+)\s*=\s*") - return choices or None + for line in comment_text.splitlines(): + s = line.lstrip() + matches = list(token_re.finditer(s)) + if not matches: + continue + if len(matches) == 1 and matches[0].start() != 0: + # Avoid false positives such as "... (0=无限制)" inside a sentence. + continue + + for i, m in enumerate(matches): + key = m.group(1) + start = m.end() + end = matches[i + 1].start() if i + 1 < len(matches) else len(s) + label = s[start:end].strip().strip(",;|/、").strip() + if not label: + continue + choices[key] = label + + # Single "0=Disabled" style hints are common in server.ini, but they are not real enums. + # Only treat it as an enum when there are at least 2 options. + return choices if len(choices) >= 2 else None def parse_server_ini(filepath: str) -> ParsedConfig: @@ -284,4 +300,3 @@ def parse_sandboxvars_lua(filepath: str, translations_json: str | None = None) - fixed_settings.append(s) return ParsedConfig(source="lua", filepath=str(path), lines=lines, settings=fixed_settings) -