♻️ refactor(core): 优化 rename.js 中的地区序列紧凑化逻辑

This commit is contained in:
2026-06-06 16:00:39 +08:00
parent b94b484b44
commit 7d5147c180
2 changed files with 34 additions and 1 deletions
+1 -1
View File
@@ -102,7 +102,7 @@ echo -e "\n${CYAN}>>> [2/2] Upgrading GUI Casks (brew upgrade --cask --greedy --
# 强制注入环境变量,确保终端输出依然保留 ANSI 颜色格式 # 强制注入环境变量,确保终端输出依然保留 ANSI 颜色格式
export HOMEBREW_COLOR=1 export HOMEBREW_COLOR=1
@
# --- 终端宽度处理 --- # --- 终端宽度处理 ---
# 固定宽度,避免动态识别终端列数导致 prompt 重绘异常。 # 固定宽度,避免动态识别终端列数导致 prompt 重绘异常。
export COLUMNS export COLUMNS
+33
View File
@@ -800,6 +800,37 @@ async function operator(proxies) {
); );
}; };
const compactRegionSequences = () => {
const indexesByRegion = Object.create(null);
sequenceInfos.forEach((sequenceInfo, proxyIndex) => {
if (!sequenceInfo) return;
const groupKey = `${subNames[proxyIndex]}\u0000${sequenceInfo.prefix}|${sequenceInfo.regionCode}`;
const regionIndexes = indexesByRegion[groupKey] || (
indexesByRegion[groupKey] = []
);
regionIndexes.push(proxyIndex);
});
Object.keys(indexesByRegion).forEach(groupKey => {
const regionIndexes = indexesByRegion[groupKey];
regionIndexes.forEach((proxyIndex, sequenceIndex) => {
const sequenceInfo = sequenceInfos[proxyIndex];
const compactSequenceNumber = (sequenceIndex + 1)
.toString()
.padStart(2, '0');
const compactSequenceInfo = {
...sequenceInfo,
sequenceNumber: compactSequenceNumber
};
sequenceInfos[proxyIndex] = compactSequenceInfo;
normalizedCoreNames[proxyIndex] = withRegionSequence(compactSequenceInfo, compactSequenceNumber);
});
});
};
const normalizeBilingualName = name => { const normalizeBilingualName = name => {
const bilingualMatch = name.match(/^(.+?)\s*\s*(.+)$/); const bilingualMatch = name.match(/^(.+?)\s*\s*(.+)$/);
if (!bilingualMatch) return name; if (!bilingualMatch) return name;
@@ -891,6 +922,8 @@ async function operator(proxies) {
sequenceInfos[proxyIndex] = sequenceInfo; sequenceInfos[proxyIndex] = sequenceInfo;
}); });
compactRegionSequences();
normalizedCoreNames.forEach((normalizedCoreName, proxyIndex) => { normalizedCoreNames.forEach((normalizedCoreName, proxyIndex) => {
const subName = subNames[proxyIndex]; const subName = subNames[proxyIndex];
const sequenceInfo = sequenceInfos[proxyIndex]; const sequenceInfo = sequenceInfos[proxyIndex];