Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

decamelize

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

decamelize - npm Package Compare versions

Comparing version 4.0.0 to 5.0.0

45

index.d.ts

@@ -0,1 +1,41 @@

declare namespace decamelize {
interface Options {
/**
Character or string inserted to separate words in `string`.
@default '_'
@example
```
import decamelize = require('decamelize');
decamelize('unicornRainbow');
//=> 'unicorn_rainbow'
decamelize('unicornRainbow', {separator: '-'});
//=> 'unicorn-rainbow'
```
*/
readonly separator?: string;
/**
Preserve sequences of uppercase characters.
@default false
@example
```
import decamelize = require('decamelize');
decamelize('testGUILabel');
//=> 'test_gui_label'
decamelize('testGUILabel', {preserveConsecutiveUppercase: true});
//=> 'test_GUI_label'
```
*/
readonly preserveConsecutiveUppercase?: boolean;
}
}
/**

@@ -5,3 +45,2 @@ Convert a camelized string into a lowercased one with a custom separator: `unicornRainbow` → `unicorn_rainbow`.

@param string - The camelcase string to decamelize.
@param separator - The separator to use to put in between the words from `string`. Default: `'_'`.

@@ -15,8 +54,8 @@ @example

decamelize('unicornRainbow', '-');
decamelize('unicornRainbow', {separator: '-'});
//=> 'unicorn-rainbow'
```
*/
declare function decamelize(string: string, separator?: string): string;
declare function decamelize(string: string, options?: decamelize.Options): string;
export = decamelize;
'use strict';
module.exports = (text, separator = '_') => {
const handlePreserveConsecutiveUppercase = (decamelized, separator) => {
// Lowercase all single uppercase characters. As we
// want to preserve uppercase sequences, we cannot
// simply lowercase the separated string at the end.
// `data_For_USACounties` → `data_for_USACounties`
decamelized = decamelized.replace(
/((?<![\p{Uppercase_Letter}\d])[\p{Uppercase_Letter}\d](?![\p{Uppercase_Letter}\d]))/gu,
$0 => {
return $0.toLowerCase();
}
);
// Remaining uppercase sequences will be separated from lowercase sequences.
// `data_For_USACounties` → `data_for_USA_counties`
return decamelized.replace(
/(\p{Uppercase_Letter}+)(\p{Uppercase_Letter}\p{Lowercase_Letter}+)/gu,
(_, $1, $2) => {
return $1 + separator + $2.toLowerCase();
}
);
};
module.exports = (
text,
{
separator = '_',
preserveConsecutiveUppercase = false
} = {}
) => {
if (!(typeof text === 'string' && typeof separator === 'string')) {
throw new TypeError('The `text` and `separator` arguments should be of type `string`');
throw new TypeError(
'The `text` and `separator` arguments should be of type `string`'
);
}
return text
.replace(/([\p{Lowercase_Letter}\d])(\p{Uppercase_Letter})/gu, `$1${separator}$2`)
.replace(/(\p{Uppercase_Letter}+)(\p{Uppercase_Letter}\p{Lowercase_Letter}+)/gu, `$1${separator}$2`)
// Checking the second character is done later on. Therefore process shorter strings here.
if (text.length < 2) {
return preserveConsecutiveUppercase ? text : text.toLowerCase();
}
const replacement = `$1${separator}$2`;
// Split lowercase sequences followed by uppercase character.
// `dataForUSACounties` → `data_For_USACounties`
// `myURLstring → `my_URLstring`
const decamelized = text.replace(
/([\p{Lowercase_Letter}\d])(\p{Uppercase_Letter})/gu,
replacement
);
if (preserveConsecutiveUppercase) {
return handlePreserveConsecutiveUppercase(decamelized, separator);
}
// Split multiple uppercase characters followed by one or more lowercase characters.
// `my_URLstring` → `my_url_string`
return decamelized
.replace(
/(\p{Uppercase_Letter}+)(\p{Uppercase_Letter}\p{Lowercase_Letter}+)/gu,
replacement
)
.toLowerCase();
};

4

package.json
{
"name": "decamelize",
"version": "4.0.0",
"version": "5.0.0",
"description": "Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow",

@@ -11,3 +11,3 @@ "license": "MIT",

"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
"url": "https://sindresorhus.com"
},

@@ -14,0 +14,0 @@ "engines": {

@@ -1,4 +0,4 @@

# decamelize [![Build Status](https://travis-ci.org/sindresorhus/decamelize.svg?branch=master)](https://travis-ci.org/sindresorhus/decamelize)
# decamelize
> Convert a camelized string into a lowercased one with a custom separator<br>
> Convert a camelized string into a lowercased one with a custom separator\
> Example: `unicornRainbow` → `unicorn_rainbow`

@@ -20,4 +20,10 @@

decamelize('unicornRainbow', '-');
decamelize('unicornRainbow', {separator: '-'});
//=> 'unicorn-rainbow'
decamelize('testGUILabel', {preserveConsecutiveUppercase: true});
//=> 'test_GUI_label'
decamelize('testGUILabel', {preserveConsecutiveUppercase: false});
//=> 'test_gui_label'
```

@@ -27,3 +33,3 @@

### decamelize(input, separator?)
### decamelize(input, options?)

@@ -34,7 +40,40 @@ #### input

#### separator
#### options
Type: `object`
##### separator
Type: `string`\
Default: `'_'`
Character or string inserted to separate words in `string`.
```js
cosnt decamelize = require('decamelize');
decamelize('unicornRainbow');
//=> 'unicorn_rainbow'
decamelize('unicornRainbow', {separator: '-'});
//=> 'unicorn-rainbow'
```
##### preserveConsecutiveUppercase
Type: `boolean`\
Default: `false`
Preserve sequences of uppercase characters.
```js
const decamelize = require('decamelize');
decamelize('testGUILabel');
//=> 'test_gui_label'
decamelize('testGUILabel', {preserveConsecutiveUppercase: true});
//=> 'test_GUI_label'
```
## Related

@@ -41,0 +80,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc