Skip to content

Commit 937cc3d

Browse files
committed
Simplify formatNumber logic
Refactored `formatNumber` to reduce redundancy and improve readability. Combined conditions to streamline the implementation and adjusted handling of null and string inputs. Updated fallback behavior to maintain correctness and consistency. test(config): refine Vitest exclusions Added specific exclusions for `src/index.ts` and `src/format/index.ts` in both test and coverage settings. Improves test accuracy by omitting irrelevant files from coverage metrics.
1 parent 7b931d7 commit 937cc3d

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

.changeset/wide-things-dig.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"vn-number": patch
3+
---
4+
5+
Optimize logic of `formatNumber` function

src/format/number.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,13 @@ function formatNumber(
1010
formatter: Intl.NumberFormat,
1111
fallbackValue: string,
1212
) {
13-
if (
14-
(typeof number === 'number' && !Number.isNaN(number)) ||
15-
typeof number === 'bigint'
16-
) {
17-
return formatter.format(number)
18-
} else if (typeof number === 'string') {
19-
try {
20-
const num = Number(number)
21-
return Number.isNaN(num) ? fallbackValue : formatter.format(num)
22-
} catch {
23-
return fallbackValue
24-
}
25-
} else {
26-
return fallbackValue
27-
}
13+
if (number == null) return fallbackValue
14+
if (typeof number === 'bigint') return formatter.format(number)
15+
if (typeof number === 'number')
16+
return Number.isNaN(number) ? fallbackValue : formatter.format(number)
17+
18+
const num = Number(number)
19+
return Number.isNaN(num) ? fallbackValue : formatter.format(num)
2820
}
2921

3022
const VN_NUMBER_FORMATTER = new Intl.NumberFormat('vi-VN')

vitest.config.mts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,19 @@ import {
88
export default defineConfig({
99
plugins: [codspeed()],
1010
test: {
11-
exclude: [...defaultExclude, 'tsdown.config.*'],
11+
exclude: [
12+
...defaultExclude,
13+
'tsdown.config.*',
14+
'src/index.ts',
15+
'src/format/index.ts',
16+
],
1217
coverage: {
13-
exclude: [...coverageConfigDefaults.exclude, 'tsdown.config.*'],
18+
exclude: [
19+
...coverageConfigDefaults.exclude,
20+
'tsdown.config.*',
21+
'src/index.ts',
22+
'src/format/index.ts',
23+
],
1424
},
1525
},
1626
})

0 commit comments

Comments
 (0)