change-case
Advanced tools
Comparing version 5.1.2 to 5.2.0
@@ -6,6 +6,19 @@ /** | ||
export type Locale = string[] | string | false | undefined; | ||
/** | ||
* Options used for converting strings to pascal/camel case. | ||
*/ | ||
export interface PascalCaseOptions extends Options { | ||
mergeAmbiguousCharacters?: boolean; | ||
} | ||
/** | ||
* Options used for converting strings to any case. | ||
*/ | ||
export interface Options extends SplitOptions { | ||
locale?: Locale; | ||
delimiter?: string; | ||
prefixCharacters?: string; | ||
} | ||
/** | ||
* Options used for splitting strings into word segments. | ||
*/ | ||
export interface SplitOptions { | ||
@@ -25,7 +38,7 @@ separateNumbers?: boolean; | ||
*/ | ||
export declare function camelCase(input: string, options?: Options): string; | ||
export declare function camelCase(input: string, options?: PascalCaseOptions): string; | ||
/** | ||
* Convert a string to pascal case (`FooBar`). | ||
*/ | ||
export declare function pascalCase(input: string, options?: Options): string; | ||
export declare function pascalCase(input: string, options?: PascalCaseOptions): string; | ||
/** | ||
@@ -32,0 +45,0 @@ * Convert a string to pascal snake case (`Foo_Bar`). |
@@ -15,4 +15,3 @@ // Regexps involved with splitting words in various case formats. | ||
*/ | ||
export function split(input, options = {}) { | ||
const { separateNumbers } = options; | ||
export function split(input, options) { | ||
let result = input.trim(); | ||
@@ -22,3 +21,3 @@ result = result | ||
.replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE); | ||
if (separateNumbers) { | ||
if (options?.separateNumbers) { | ||
result = result | ||
@@ -48,3 +47,3 @@ .replace(SPLIT_NUMBER_LOWER_RE, SPLIT_REPLACE_VALUE) | ||
.map(lowerFactory(options?.locale)) | ||
.join(" ")); | ||
.join(options?.delimiter ?? " ")); | ||
} | ||
@@ -58,3 +57,5 @@ /** | ||
const upper = upperFactory(options?.locale); | ||
const transform = pascalCaseTransformFactory(lower, upper); | ||
const transform = options?.mergeAmbiguousCharacters | ||
? capitalCaseTransformFactory(lower, upper) | ||
: pascalCaseTransformFactory(lower, upper); | ||
return (prefix + | ||
@@ -67,3 +68,3 @@ split(input, options) | ||
}) | ||
.join("")); | ||
.join(options?.delimiter ?? "")); | ||
} | ||
@@ -77,4 +78,9 @@ /** | ||
const upper = upperFactory(options?.locale); | ||
const transform = options?.mergeAmbiguousCharacters | ||
? capitalCaseTransformFactory(lower, upper) | ||
: pascalCaseTransformFactory(lower, upper); | ||
return (prefix + | ||
split(input, options).map(pascalCaseTransformFactory(lower, upper)).join("")); | ||
split(input, options) | ||
.map(transform) | ||
.join(options?.delimiter ?? "")); | ||
} | ||
@@ -85,9 +91,3 @@ /** | ||
export function pascalSnakeCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
return (prefix + | ||
split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join("_")); | ||
return capitalCase(input, { delimiter: "_", ...options }); | ||
} | ||
@@ -104,3 +104,3 @@ /** | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join(" ")); | ||
.join(options?.delimiter ?? " ")); | ||
} | ||
@@ -112,4 +112,6 @@ /** | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const upper = upperFactory(options?.locale); | ||
return prefix + split(input, options).map(upper).join("_"); | ||
return (prefix + | ||
split(input, options) | ||
.map(upperFactory(options?.locale)) | ||
.join(options?.delimiter ?? "_")); | ||
} | ||
@@ -120,5 +122,3 @@ /** | ||
export function dotCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return prefix + split(input, options).map(lower).join("."); | ||
return noCase(input, { delimiter: ".", ...options }); | ||
} | ||
@@ -129,5 +129,3 @@ /** | ||
export function kebabCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return prefix + split(input, options).map(lower).join("-"); | ||
return noCase(input, { delimiter: "-", ...options }); | ||
} | ||
@@ -138,5 +136,3 @@ /** | ||
export function pathCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return prefix + split(input, options).map(lower).join("/"); | ||
return noCase(input, { delimiter: "/", ...options }); | ||
} | ||
@@ -158,3 +154,3 @@ /** | ||
}) | ||
.join(" ")); | ||
.join(options?.delimiter ?? " ")); | ||
} | ||
@@ -165,5 +161,3 @@ /** | ||
export function snakeCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return prefix + split(input, options).map(lower).join("_"); | ||
return noCase(input, { delimiter: "_", ...options }); | ||
} | ||
@@ -174,9 +168,3 @@ /** | ||
export function trainCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
return (prefix + | ||
split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join("-")); | ||
return capitalCase(input, { delimiter: "-", ...options }); | ||
} | ||
@@ -183,0 +171,0 @@ function lowerFactory(locale) { |
{ | ||
"name": "change-case", | ||
"version": "5.1.2", | ||
"version": "5.2.0", | ||
"description": "Transform a string between `camelCase`, `PascalCase`, `Capital Case`, `snake_case`, `kebab-case`, `CONSTANT_CASE` and others", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -38,6 +38,9 @@ # Change Case | ||
- `delimiter?: string` The character to use between words. Default depends on method, e.g. `_` in snake case. | ||
- `locale?: string[] | string | false` Lower/upper according to specified locale, defaults to host environment. Set to `false` to disable. | ||
- `separateNumbers?: boolean` Splits `foo123` into `foo 123` instead of keeping them together. Defaults to `true`. | ||
- `separateNumbers?: boolean` Splits `foo123` into `foo 123` instead of keeping them together. Defaults to `false`. | ||
- `prefixCharacters?: string` Retain at the beginning of the string. Defaults to `""`. Example: use `"_"` to keep the underscores in `__typename`. | ||
By default, `pascalCase` and `snakeCase` separate ambiguous characters with `_`. For example, `V1.2` would become `V1_2` instead of `V12`. If you prefer them merged you can set `mergeAmbiguousCharacters` to `true`. | ||
### Split | ||
@@ -44,0 +47,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
306
78
32223