♻️ refactor(core): 优化 rename.js 中的地区序列紧凑化逻辑
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
Reference in New Issue
Block a user