Skip to content

Commit 7f36987

Browse files
committed
refactor: core functions
1 parent 36de7ef commit 7f36987

File tree

4 files changed

+29
-27
lines changed

4 files changed

+29
-27
lines changed

src/case.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ function snakeCase(str: string, inWords = false, locales?: Intl.LocalesArgument)
157157
const numbersInWords = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
158158
if (inWords) {
159159
for (let i = 0; i < numbersInWords.length; i++) {
160-
str = str.replace(RegExp(i.toString(), 'g'), (_char: string) => ' ' + numbersInWords[i] + ' ')
160+
str = str.replace(RegExp(i.toString(), 'g'), () => ' ' + numbersInWords[i] + ' ')
161161
}
162162
}
163163

@@ -181,7 +181,7 @@ function kebabCase(str: string, inWords = false, locales?: Intl.LocalesArgument)
181181
const numbersInWords = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
182182
if (inWords) {
183183
for (let i = 0; i < numbersInWords.length; i++) {
184-
str = str.replace(RegExp(i.toString(), 'g'), (_char: string) => ' ' + numbersInWords[i] + ' ')
184+
str = str.replace(RegExp(i.toString(), 'g'), () => ' ' + numbersInWords[i] + ' ')
185185
}
186186
}
187187

src/merge.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
*/
2323
function merge(sep: string | boolean, ...strings: string[] | string[][]): string {
2424
strings = strings.flat()
25-
for (let i = 0, val = ''; i < strings.length; i++) {
26-
if (strings.length - 1 === i) return val + strings[i]
27-
else if (typeof sep === 'boolean') val += sep ? strings[i] + ' ' : strings[i]
28-
else val += strings[i] + sep
25+
if (typeof sep === 'boolean') {
26+
const separator = sep ? ' ' : ''
27+
return strings.length === 0 ? separator : strings.join(separator)
2928
}
30-
return typeof sep === 'boolean' ? (sep ? ' ' : '') : sep
29+
if (strings.length === 0) return sep
30+
return strings.join(sep)
3131
}
3232

3333
export { merge }

src/padding.ts

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ interface PaddingOptions {
2424
* padStart('hello', 'abc', 3, 8) // abchello
2525
*/
2626
function padStart(val: string, fillString = '\u0020', repeatCount = 1, maxLen?: number): string {
27-
if (typeof maxLen !== 'undefined' && maxLen <= val.length) return val
28-
else if (typeof maxLen === 'undefined') {
29-
for (let i = 0; i < repeatCount; i++) val = fillString + val
30-
return val
31-
}
32-
for (let i = 0; i < repeatCount && val.length <= maxLen; i++) val = fillString + val
33-
const finalVal = val.length > maxLen ? val.substring(Math.abs(maxLen - val.length)) : val
34-
return finalVal
27+
const padding = fillString.repeat(repeatCount)
28+
if (typeof maxLen === 'undefined') return padding + val
29+
if (maxLen <= val.length) return val
30+
31+
const remSpace = maxLen - val.length
32+
return padding.slice(-remSpace) + val
3533
}
3634

3735
/**
@@ -49,13 +47,12 @@ function padStart(val: string, fillString = '\u0020', repeatCount = 1, maxLen?:
4947
* padEnd('hello', 'abc', 3, 8); // helloabc
5048
*/
5149
function padEnd(val: string, fillString = '\u0020', repeatCount = 1, maxLen?: number): string {
52-
if (typeof maxLen !== 'undefined' && maxLen <= val.length) return val
53-
else if (typeof maxLen === 'undefined') {
54-
for (let i = 0; i < repeatCount; i++) val += fillString
55-
return val
56-
}
57-
for (let i = 0; i < repeatCount && val.length <= maxLen; i++) val += fillString
58-
return val.substring(0, maxLen)
50+
const padding = fillString.repeat(repeatCount)
51+
if (typeof maxLen === 'undefined') return val + padding
52+
if (maxLen <= val.length) return val
53+
54+
const remSpace = maxLen - val.length
55+
return val + padding.substring(0, remSpace)
5956
}
6057

6158
/**

src/regionMatchers.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,17 @@ function looseRegionMatch(
8383
end?: number,
8484
locales?: Intl.LocalesArgument
8585
): boolean {
86-
if (typeof str1 === 'string') str1 = str1.toLocaleLowerCase(locales)
87-
else str1.str = str1.str.toLocaleLowerCase(locales)
88-
if (typeof str2 === 'string') str2 = str2.toLocaleLowerCase(locales)
89-
else str2.str = str2.str.toLocaleLowerCase(locales)
86+
if (typeof str1 === 'string') {
87+
const e = end ?? str1.length
88+
str1 = { str: str1.toLocaleLowerCase(locales), start, end: e }
89+
} else str1.str = str1.str.toLocaleLowerCase(locales)
90+
91+
if (typeof str2 === 'string') {
92+
const e = end ?? str2.length
93+
str2 = { str: str2.toLocaleLowerCase(locales), start, end: e }
94+
} else str2.str = str2.str.toLocaleLowerCase(locales)
9095

91-
return regionMatch(str1, str2, start, end)
96+
return regionMatch(str1, str2)
9297
}
9398

9499
export { regionMatch, looseRegionMatch, type StringRegion }

0 commit comments

Comments
 (0)