change-case
Advanced tools
Comparing version 5.0.2 to 5.1.0
@@ -8,7 +8,4 @@ /** | ||
locale?: Locale; | ||
prefixCharacters?: string; | ||
} | ||
/** | ||
* Convert a string to space separated lower case (`foo bar`). | ||
*/ | ||
export declare function noCase(input: string, options?: Options): string; | ||
export interface SplitOptions { | ||
@@ -22,2 +19,6 @@ separateNumbers?: boolean; | ||
/** | ||
* Convert a string to space separated lower case (`foo bar`). | ||
*/ | ||
export declare function noCase(input: string, options?: Options): string; | ||
/** | ||
* Convert a string to camel case (`fooBar`). | ||
@@ -24,0 +25,0 @@ */ |
@@ -1,9 +0,1 @@ | ||
/** | ||
* Convert a string to space separated lower case (`foo bar`). | ||
*/ | ||
export function noCase(input, options) { | ||
return split(input, options) | ||
.map(lowerFactory(options?.locale)) | ||
.join(" "); | ||
} | ||
// Regexps involved with splitting words in various case formats. | ||
@@ -18,2 +10,4 @@ const SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu; | ||
const SPLIT_REPLACE_VALUE = "$1\0$2"; | ||
// The default characters to keep after transforming case. | ||
const DEFAULT_PREFIX_CHARACTERS = ""; | ||
/** | ||
@@ -23,6 +17,8 @@ * Split any cased input strings into an array of words. | ||
export function split(input, options = {}) { | ||
let result = input | ||
const { separateNumbers } = options; | ||
let result = input.trim(); | ||
result = result | ||
.replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE) | ||
.replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE); | ||
if (options.separateNumbers) { | ||
if (separateNumbers) { | ||
result = result | ||
@@ -42,19 +38,30 @@ .replace(SPLIT_NUMBER_LOWER_RE, SPLIT_REPLACE_VALUE) | ||
end--; | ||
// Transform each token independently. | ||
return result.slice(start, end).split(/\0/g); | ||
} | ||
/** | ||
* Convert a string to space separated lower case (`foo bar`). | ||
*/ | ||
export function noCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
return (prefix + | ||
split(input, options) | ||
.map(lowerFactory(options?.locale)) | ||
.join(" ")); | ||
} | ||
/** | ||
* Convert a string to camel case (`fooBar`). | ||
*/ | ||
export function camelCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
const transform = pascalCaseTransformFactory(lower, upper); | ||
return split(input, options) | ||
.map((word, index) => { | ||
if (index === 0) | ||
return lower(word); | ||
return transform(word, index); | ||
}) | ||
.join(""); | ||
return (prefix + | ||
split(input, options) | ||
.map((word, index) => { | ||
if (index === 0) | ||
return lower(word); | ||
return transform(word, index); | ||
}) | ||
.join("")); | ||
} | ||
@@ -65,7 +72,7 @@ /** | ||
export function pascalCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
return split(input, options) | ||
.map(pascalCaseTransformFactory(lower, upper)) | ||
.join(""); | ||
return (prefix + | ||
split(input, options).map(pascalCaseTransformFactory(lower, upper)).join("")); | ||
} | ||
@@ -76,7 +83,9 @@ /** | ||
export function pascalSnakeCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
return split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join("_"); | ||
return (prefix + | ||
split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join("_")); | ||
} | ||
@@ -87,7 +96,9 @@ /** | ||
export function capitalCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
return split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join(" "); | ||
return (prefix + | ||
split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join(" ")); | ||
} | ||
@@ -98,4 +109,5 @@ /** | ||
export function constantCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const upper = upperFactory(options?.locale); | ||
return split(input, options).map(upper).join("_"); | ||
return prefix + split(input, options).map(upper).join("_"); | ||
} | ||
@@ -106,4 +118,5 @@ /** | ||
export function dotCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return split(input, options).map(lower).join("."); | ||
return prefix + split(input, options).map(lower).join("."); | ||
} | ||
@@ -114,4 +127,5 @@ /** | ||
export function kebabCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return split(input, options).map(lower).join("-"); | ||
return prefix + split(input, options).map(lower).join("-"); | ||
} | ||
@@ -122,4 +136,5 @@ /** | ||
export function pathCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return split(input, options).map(lower).join("/"); | ||
return prefix + split(input, options).map(lower).join("/"); | ||
} | ||
@@ -130,12 +145,14 @@ /** | ||
export function sentenceCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
const transform = capitalCaseTransformFactory(lower, upper); | ||
return split(input, options) | ||
.map((word, index) => { | ||
if (index === 0) | ||
return transform(word); | ||
return lower(word); | ||
}) | ||
.join(" "); | ||
return (prefix + | ||
split(input, options) | ||
.map((word, index) => { | ||
if (index === 0) | ||
return transform(word); | ||
return lower(word); | ||
}) | ||
.join(" ")); | ||
} | ||
@@ -146,4 +163,5 @@ /** | ||
export function snakeCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
return split(input, options).map(lower).join("_"); | ||
return prefix + split(input, options).map(lower).join("_"); | ||
} | ||
@@ -154,7 +172,9 @@ /** | ||
export function trainCase(input, options) { | ||
const prefix = getPrefix(input, options?.prefixCharacters); | ||
const lower = lowerFactory(options?.locale); | ||
const upper = upperFactory(options?.locale); | ||
return split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join("-"); | ||
return (prefix + | ||
split(input, options) | ||
.map(capitalCaseTransformFactory(lower, upper)) | ||
.join("-")); | ||
} | ||
@@ -181,2 +201,15 @@ function lowerFactory(locale) { | ||
} | ||
function getPrefix(input, prefixCharacters = DEFAULT_PREFIX_CHARACTERS) { | ||
let prefix = ""; | ||
for (let i = 0; i < input.length; i++) { | ||
const char = input.charAt(i); | ||
if (prefixCharacters.includes(char)) { | ||
prefix += char; | ||
} | ||
else { | ||
break; | ||
} | ||
} | ||
return prefix; | ||
} | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "change-case", | ||
"version": "5.0.2", | ||
"version": "5.1.0", | ||
"description": "Transform a string between `camelCase`, `PascalCase`, `Capital Case`, `snake_case`, `kebab-case`, `CONSTANT_CASE` and others", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -34,4 +34,5 @@ # Change Case | ||
- `locale?: string[] | string | false` - lower/upper according to specified locale, defaults to host environment. Set to `false` to disable. | ||
- `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`. | ||
- `prefixCharacters?: string` Retain at the beginning of the string. Defaults to `""`. Example: use `"_"` to keep the underscores in `__typename`. | ||
@@ -38,0 +39,0 @@ ### Split |
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
33134
305
71