perf: cache string helpers
This commit is contained in:
parent
51980afca2
commit
04e11187b9
@ -66,19 +66,33 @@ export const isReservedProp = /*#__PURE__*/ makeMap(
|
||||
'onVnodeBeforeUnmount,onVnodeUnmounted'
|
||||
)
|
||||
|
||||
const camelizeRE = /-(\w)/g
|
||||
export const camelize = (str: string): string => {
|
||||
return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''))
|
||||
function cacheStringFunction<T extends (str: string) => string>(fn: T): T {
|
||||
const cache: Record<string, string> = Object.create(null)
|
||||
return ((str: string) => {
|
||||
const hit = cache[str]
|
||||
return hit || (cache[str] = fn(str))
|
||||
}) as any
|
||||
}
|
||||
|
||||
const camelizeRE = /-(\w)/g
|
||||
export const camelize = cacheStringFunction(
|
||||
(str: string): string => {
|
||||
return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''))
|
||||
}
|
||||
)
|
||||
|
||||
const hyphenateRE = /\B([A-Z])/g
|
||||
export const hyphenate = (str: string): string => {
|
||||
return str.replace(hyphenateRE, '-$1').toLowerCase()
|
||||
}
|
||||
export const hyphenate = cacheStringFunction(
|
||||
(str: string): string => {
|
||||
return str.replace(hyphenateRE, '-$1').toLowerCase()
|
||||
}
|
||||
)
|
||||
|
||||
export const capitalize = (str: string): string => {
|
||||
return str.charAt(0).toUpperCase() + str.slice(1)
|
||||
}
|
||||
export const capitalize = cacheStringFunction(
|
||||
(str: string): string => {
|
||||
return str.charAt(0).toUpperCase() + str.slice(1)
|
||||
}
|
||||
)
|
||||
|
||||
// compare whether a value has changed, accounting for NaN.
|
||||
export const hasChanged = (value: any, oldValue: any): boolean =>
|
||||
|
Loading…
Reference in New Issue
Block a user