Skip to content

Commit fbab517

Browse files
committed
feat(utils): add support to alpha first order
1 parent 34d1ed9 commit fbab517

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

src/scripts/taglist-order.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,15 @@ const applyOrder = (order, e1, e2) => {
6161
if (e1 === e2) {
6262
return 0;
6363
}
64-
if (order.numFirst) {
65-
if (typeof e1 === 'number') {
66-
const factor = order.numAsc ? 1 : -1;
67-
return typeof e2 === 'number' ? (e1 - e2) * factor : -1;
68-
} else if (typeof e2 === 'number') {
69-
return 1;
70-
} else {
71-
const factor = order.alphaAsc ? 1 : -1;
72-
return e1.localeCompare(e2) * factor
73-
}
64+
const numFirst = order.numFirst ? 1 : -1;
65+
if (typeof e1 === 'number') {
66+
const factor = order.numAsc ? 1 : -1;
67+
return typeof e2 === 'number' ? (e1 - e2) * factor : -1 * numFirst;
68+
} else if (typeof e2 === 'number') {
69+
return 1 * numFirst;
70+
} else {
71+
const factor = order.alphaAsc ? 1 : -1;
72+
return e1.localeCompare(e2) * factor;
7473
}
7574
};
7675

test/taglist-order.test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,5 +118,41 @@ describe('utils tests', () => {
118118
assert.deepEqual(['latest', '0.2.4', 'main'].sort(comparator), ['0.2.4', 'main', 'latest']);
119119
assert.deepEqual(['latest', '1.0.0-SNAPSHOT', '1.0.0'].sort(comparator), ['1.0.0', '1.0.0-SNAPSHOT', 'latest']);
120120
});
121+
122+
it('should sort tags with `alpha-asc;num-asc`', () => {
123+
const comparator = getTagComparator(taglistOrderParser('alpha-asc;num-asc'));
124+
125+
assert.deepEqual(['0.2.4', '1.2.5', '0.2.5'].sort(comparator), ['0.2.4', '0.2.5', '1.2.5']);
126+
assert.deepEqual(['latest', '0.2.4', 'main'].sort(comparator), ['latest', 'main', '0.2.4']);
127+
assert.deepEqual(['latest', '1.0.0-SNAPSHOT', '1.0.0'].sort(comparator), ['latest', '1.0.0', '1.0.0-SNAPSHOT']);
128+
assert.deepEqual(['latest', 'main', 'edge'].sort(comparator), ['edge', 'latest', 'main']);
129+
});
130+
131+
it('should sort tags with `alpha-asc;num-desc`', () => {
132+
const comparator = getTagComparator(taglistOrderParser('alpha-asc;num-desc'));
133+
134+
assert.deepEqual(['0.2.4', '1.2.5', '0.2.5'].sort(comparator), ['1.2.5', '0.2.5', '0.2.4']);
135+
assert.deepEqual(['latest', '0.2.4', 'main'].sort(comparator), ['latest', 'main', '0.2.4']);
136+
assert.deepEqual(['latest', '1.0.0-SNAPSHOT', '1.0.0'].sort(comparator), ['latest', '1.0.0', '1.0.0-SNAPSHOT']);
137+
assert.deepEqual(['latest', 'main', 'edge'].sort(comparator), ['edge', 'latest', 'main']);
138+
});
139+
140+
it('should sort tags with `alpha-desc;num-asc`', () => {
141+
const comparator = getTagComparator(taglistOrderParser('alpha-desc;num-asc'));
142+
143+
assert.deepEqual(['0.2.4', '1.2.5', '0.2.5'].sort(comparator), ['0.2.4', '0.2.5', '1.2.5']);
144+
assert.deepEqual(['latest', '0.2.4', 'main'].sort(comparator), ['main', 'latest', '0.2.4']);
145+
assert.deepEqual(['latest', '1.0.0-SNAPSHOT', '1.0.0'].sort(comparator), ['latest', '1.0.0', '1.0.0-SNAPSHOT']);
146+
assert.deepEqual(['latest', 'main', 'edge'].sort(comparator), ['main', 'latest', 'edge']);
147+
});
148+
149+
it('should sort tags with `alpha-desc;num-desc`', () => {
150+
const comparator = getTagComparator(taglistOrderParser('alpha-desc;num-desc'));
151+
152+
assert.deepEqual(['0.2.4', '1.2.5', '0.2.5'].sort(comparator), ['1.2.5', '0.2.5', '0.2.4']);
153+
assert.deepEqual(['latest', '0.2.4', 'main'].sort(comparator), ['main', 'latest', '0.2.4']);
154+
assert.deepEqual(['latest', '1.0.0-SNAPSHOT', '1.0.0'].sort(comparator), ['latest', '1.0.0', '1.0.0-SNAPSHOT']);
155+
assert.deepEqual(['latest', 'main', 'edge'].sort(comparator), ['main', 'latest', 'edge']);
156+
});
121157
});
122158
});

0 commit comments

Comments
 (0)