From ea34dc7659af016448a19509c3018ec8170ceb5a Mon Sep 17 00:00:00 2001 From: Orion Date: Wed, 3 Jun 2026 11:33:07 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(substore):=20?= =?UTF-8?q?=E7=AE=80=E5=8C=96=20rename.js=20=E4=B8=AD=E7=9A=84=E5=BA=8F?= =?UTF-8?q?=E5=8F=B7=E5=88=86=E9=85=8D=E9=80=BB=E8=BE=91=E5=B9=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- substore/rename.js | 45 ++++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-) diff --git a/substore/rename.js b/substore/rename.js index c463b6f..74ee2c7 100644 --- a/substore/rename.js +++ b/substore/rename.js @@ -9,10 +9,10 @@ function operator(proxies) { const globalCount = Object.create(null); const currentCount = Object.create(null); const baseNames = new Array(proxies.length); + const finalCoreNames = new Array(proxies.length); const normalizedCoreNames = new Array(proxies.length); const subNames = new Array(proxies.length); const sequenceInfos = new Array(proxies.length); - const sequenceGroups = Object.create(null); const suffixRegexCache = Object.create(null); const regionAliases = [ @@ -706,8 +706,7 @@ function operator(proxies) { prefix, regionCode, sequenceNumber, - rest, - key: `${prefix}${regionCode}\u0000${rest.trim()}` + rest }; }; @@ -717,18 +716,6 @@ function operator(proxies) { .trim(); }; - const nextRegionSequence = sequenceGroup => { - while (sequenceGroup.used[sequenceGroup.next.toString().padStart(2, '0')]) { - sequenceGroup.next += 1; - } - - const sequenceNumber = sequenceGroup.next.toString().padStart(2, '0'); - sequenceGroup.used[sequenceNumber] = true; - sequenceGroup.next += 1; - - return sequenceNumber; - }; - const normalizeBilingualName = name => { const bilingualMatch = name.match(/^(.+?)\s*|\s*(.+)$/); if (!bilingualMatch) return name; @@ -808,42 +795,34 @@ function operator(proxies) { normalizedCoreNames[proxyIndex] = normalizedCoreName; subNames[proxyIndex] = subName; sequenceInfos[proxyIndex] = sequenceInfo; - - if (sequenceInfo) { - const sequenceGroupKey = `${subName}\u0000${sequenceInfo.key}`; - const sequenceGroup = sequenceGroups[sequenceGroupKey] || ( - sequenceGroups[sequenceGroupKey] = { used: Object.create(null), next: 1 } - ); - - if (sequenceInfo.sequenceNumber) { - sequenceGroup.used[sequenceInfo.sequenceNumber] = true; - } - } }); normalizedCoreNames.forEach((normalizedCoreName, proxyIndex) => { const subName = subNames[proxyIndex]; const sequenceInfo = sequenceInfos[proxyIndex]; const needsLeadingSequence = sequenceInfo && !sequenceInfo.sequenceNumber; - const sequenceGroupKey = sequenceInfo ? `${subName}\u0000${sequenceInfo.key}` : ''; - const sequenceNumber = needsLeadingSequence - ? nextRegionSequence(sequenceGroups[sequenceGroupKey]) - : ''; const coreName = needsLeadingSequence - ? withRegionSequence(sequenceInfo, sequenceNumber) + ? withRegionSequence(sequenceInfo, '01') : normalizedCoreName; const baseName = subName ? `${coreName} - ${subName}` : coreName; + finalCoreNames[proxyIndex] = coreName; baseNames[proxyIndex] = baseName; globalCount[baseName] = (globalCount[baseName] || 0) + 1; }); return proxies.map((proxy, proxyIndex) => { const baseName = baseNames[proxyIndex]; + const coreName = finalCoreNames[proxyIndex]; + const subName = subNames[proxyIndex]; + const sequenceInfo = sequenceInfos[proxyIndex]; - if (globalCount[baseName] > 1) { + if (globalCount[baseName] > 1 && !sequenceInfo) { currentCount[baseName] = (currentCount[baseName] || 0) + 1; - proxy.name = `${baseName} ${currentCount[baseName].toString().padStart(2, '0')}`; + const duplicateNumber = currentCount[baseName].toString().padStart(2, '0'); + proxy.name = subName + ? `${coreName} ${duplicateNumber} - ${subName}` + : `${baseName} ${duplicateNumber}`; } else { proxy.name = baseName; }