♻️ refactor(core): 优化 rename.js 中的地区序列紧凑化逻辑
This commit is contained in:
@@ -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 bilingualMatch = name.match(/^(.+?)\s*|\s*(.+)$/);
|
||||
if (!bilingualMatch) return name;
|
||||
@@ -891,6 +922,8 @@ async function operator(proxies) {
|
||||
sequenceInfos[proxyIndex] = sequenceInfo;
|
||||
});
|
||||
|
||||
compactRegionSequences();
|
||||
|
||||
normalizedCoreNames.forEach((normalizedCoreName, proxyIndex) => {
|
||||
const subName = subNames[proxyIndex];
|
||||
const sequenceInfo = sequenceInfos[proxyIndex];
|
||||
|
||||
Reference in New Issue
Block a user