8000 fix: gives maximum priority to the void character in custom sort type · azat-io/eslint-plugin-perfectionist@1649bea · GitHub
[go: up one dir, main page]

Skip to content

Commit 1649bea

Browse files
authored
fix: gives maximum priority to the void character in custom sort type
1 parent 5576614 commit 1649bea

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

test/compare.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,21 @@ describe('compare', () => {
249249
}),
250250
).toBe(0)
251251
})
252+
253+
it('gives maximum priority to void', () => {
254+
expect(
255+
compare(createTestNode({ name: 'a' }), createTestNode({ name: '' }), {
256+
...compareOptions,
257+
alphabet: 'a',
258+
}),
259+
).toBe(1)
260+
expect(
261+
compare(createTestNode({ name: '' }), createTestNode({ name: 'a' }), {
262+
...compareOptions,
263+
alphabet: 'a',
264+
}),
265+
).toBe(-1)
266+
})
252267
})
253268

254269
let createTestNode = ({ name }: { name: string }): SortingNode =>

utils/compare.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ let getCustomSortingFunction = <T extends SortingNode>(
122122
return (aNode: T, bNode: T) => {
123123
let aValue = formatString(nodeValueGetter(aNode))
124124
let bValue = formatString(nodeValueGetter(bNode))
125+
let minLength = Math.min(aValue.length, bValue.length)
125126
// Iterate character by character
126-
// eslint-disable-next-line unicorn/no-for-loop
127-
for (let i = 0; i < aValue.length; i++) {
127+
for (let i = 0; i < minLength; i++) {
128128
let aCharacter = aValue[i]
129129
let bCharacter = bValue[i]
130130
let indexOfA = indexByCharacters.get(aCharacter)
@@ -135,7 +135,10 @@ let getCustomSortingFunction = <T extends SortingNode>(
135135
return convertBooleanToSign(indexOfA - indexOfB > 0)
136136
}
137137
}
138-
return 0
138+
if (aValue.length === bValue.length) {
139+
return 0
140+
}
141+
return convertBooleanToSign(aValue.length - bValue.length > 0)
139142
}
140143
}
141144

0 commit comments

Comments
 (0)
0