mirror of
https://github.com/swc-project/swc.git
synced 2024-12-23 05:32:09 +03:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
// Loaded from https://deno.land/x/cliffy@v0.12.1/packages/x/normalCase.ts
|
|
|
|
|
|
import camelCaseRegexp from 'https://deno.land/x/case/vendor/camelCaseRegexp.ts';
|
|
import camelCaseUpperRegexp from 'https://deno.land/x/case/vendor/camelCaseUpperRegexp.ts';
|
|
|
|
import nonWordRegexp from 'https://deno.land/x/case/vendor/nonWordRegexp.ts';
|
|
import lowerCase from './lowerCase.ts';
|
|
|
|
export default function normalCase( str: string, locale?: string, replacement?: string ): string {
|
|
|
|
if ( str == null ) {
|
|
return '';
|
|
}
|
|
|
|
replacement = typeof replacement !== 'string' ? ' ' : replacement;
|
|
|
|
function replace( match: string, index: number, value: string ): string {
|
|
if ( index === 0 || index === value.length - match.length ) {
|
|
return '';
|
|
}
|
|
|
|
return replacement || '';
|
|
}
|
|
|
|
str = String( str )
|
|
// Support camel case ("camelCase" -> "camel Case").
|
|
.replace( camelCaseRegexp, '$1 $2' )
|
|
// Support odd camel case ("CAMELCase" -> "CAMEL Case").
|
|
.replace( camelCaseUpperRegexp, '$1 $2' )
|
|
// Remove all non-word characters and replace with a single space.
|
|
.replace( nonWordRegexp, replace );
|
|
|
|
// Lower case the entire string.
|
|
return lowerCase( str, locale );
|
|
}
|