Skip to content

Commit 7a0a96c

Browse files
authored
fix: Ignore whitespaces in node names
1 parent c18cb4d commit 7a0a96c

File tree

3 files changed

+41
-8
lines changed

3 files changed

+41
-8
lines changed

Diff for: test/sort-intersection-types.test.ts

+14
Original file line numberDiff line numberDiff line change
@@ -1439,5 +1439,19 @@ describe(ruleName, () => {
14391439
],
14401440
},
14411441
)
1442+
1443+
ruleTester.run(`${ruleName}: should ignore whitespaces`, rule, {
1444+
valid: [
1445+
{
1446+
code: dedent`
1447+
type T =
1448+
{ a: string } &
1449+
{ b: string }
1450+
`,
1451+
options: [{}],
1452+
},
1453+
],
1454+
invalid: [],
1455+
})
14421456
})
14431457
})

Diff for: test/sort-union-types.test.ts

+14
Original file line numberDiff line numberDiff line change
@@ -1471,5 +1471,19 @@ describe(ruleName, () => {
14711471
],
14721472
},
14731473
)
1474+
1475+
ruleTester.run(`${ruleName}: should ignore whitespaces`, rule, {
1476+
valid: [
1477+
{
1478+
code: dedent`
1479+
type T =
1480+
{ a: string } |
1481+
{ b: string }
1482+
`,
1483+
options: [{}],
1484+
},
1485+
],
1486+
invalid: [],
1487+
})
14741488
})
14751489
})

Diff for: utils/compare.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,11 @@ export let compare = (
3737
): number => {
3838
let orderCoefficient = options.order === 'asc' ? 1 : -1
3939
let sortingFunction: (a: SortingNode, b: SortingNode) => number
40-
41-
let formatString =
42-
options.type === 'line-length' || !options.ignoreCase
43-
? (string: string) => string
44-
: (string: string) => string.toLowerCase()
45-
4640
let nodeValueGetter =
4741
options.nodeValueGetter ?? ((node: SortingNode) => node.name)
4842

4943
if (options.type === 'alphabetical') {
44+
let formatString = getFormatStringFunc(!!options.ignoreCase)
5045
sortingFunction = (aNode, bNode) =>
5146
formatString(nodeValueGetter(aNode)).localeCompare(
5247
formatString(nodeValueGetter(bNode)),
@@ -59,11 +54,13 @@ export let compare = (
5954
}
6055
return string
6156
}
62-
sortingFunction = (aNode, bNode) =>
63-
naturalCompare(
57+
sortingFunction = (aNode, bNode) => {
58+
let formatString = getFormatStringFunc(!!options.ignoreCase)
59+
return naturalCompare(
6460
prepareNumeric(formatString(nodeValueGetter(aNode))),
6561
prepareNumeric(formatString(nodeValueGetter(bNode))),
6662
)
63+
}
6764
} else {
6865
sortingFunction = (aNode, bNode) => {
6966
let aSize = aNode.size
@@ -90,3 +87,11 @@ export let compare = (
9087

9188
return orderCoefficient * sortingFunction(a, b)
9289
}
90+
91+
let getFormatStringFunc = (ignoreCase: boolean) => (value: string) => {
92+
let valueToCompare = value
93+
if (ignoreCase) {
94+
valueToCompare = valueToCompare.toLowerCase()
95+
}
96+
return valueToCompare.replaceAll(/\s/g, '')
97+
}

0 commit comments

Comments
 (0)