https://github.com/magynhard/lucky-case
The lucky javascript library to identify and convert strings from any letter case to another
https://github.com/magynhard/lucky-case
capitalize case convert-strings converter dash-case javascript letter-case lower-case node-js npm-module npm-package pascal-case recognizer snake-case string-transformations transformer upper-case utf-8
Last synced: about 2 months ago
JSON representation
The lucky javascript library to identify and convert strings from any letter case to another
- Host: GitHub
- URL: https://github.com/magynhard/lucky-case
- Owner: magynhard
- License: mit
- Created: 2020-11-22T18:18:24.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-17T16:07:14.000Z (10 months ago)
- Last Synced: 2025-04-03T11:54:05.000Z (about 2 months ago)
- Topics: capitalize, case, convert-strings, converter, dash-case, javascript, letter-case, lower-case, node-js, npm-module, npm-package, pascal-case, recognizer, snake-case, string-transformations, transformer, upper-case, utf-8
- Language: JavaScript
- Homepage:
- Size: 324 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lucky-case
[](https://www.npmjs.com/package/lucky-case)
[](https://github.com/magynhard/lucky-case/releases)

[](LICENSE)> The lucky javascript library to identify and convert strings from any letter case to another. Plus some extra functions.
It's a port of my ruby gem [lucky_case](https://github.com/magynhard/lucky_case).
Useful when working with conventions, where class names, method names and file names needs to be converted.
* Converters: Only characters, numbers, dashes and underlines are allowed inside a string.
* Must not start with dash or number, underlines at the beginning are allowed by default and can be allowed/removed/controlled by parameter (when used for private methods for example)### Support for UTF-8 / Unicode
As JavaScript has no unicode regular expression support like Ruby, UTF-8/Unicode-Ranges for non-latin letters have been included,
to ensure proper case detection.This functionality has not been extensively tested and is therefore experimental in nature.
# Contents
* [Usage](#usage)
* [Installation](#installation)
* [Documentation](#documentation)
* [Contributing](#contributing)You can either use the static LuckyCase class with its method or optionally monkey patch the String class.
### Approach 1: Using the static class
```javascript
// node js
const LuckyCase = require('lucky-case');
// browser// converters
LuckyCase.toSnakeCase('PascalToSnake') // => 'pascal_to_snake'
LuckyCase.toUpperSnakeCase('Train-To-Upper-Snake') // => 'TRAIN_TO_UPPER_SNAKE'
LuckyCase.toPascalCase('snake_to_pascal') // => 'SnakeToPascal'
LuckyCase.toCamelCase('dash-to-camel-case') // => 'dashToCamelCase'
LuckyCase.toDashCase('PascalToDashCase') // => 'pascal-to-dash-case'
LuckyCase.toUpperDashCase('PascalToUpperDash') // => 'PASCAL-TO-UPPER-DASH'
LuckyCase.toTrainCase('snake_to_train_case') // => 'Snake-To-Train-Case'
LuckyCase.toWordCase('PascalToWordCase') // => 'pascal to word case'
LuckyCase.toUpperWordCase('PascalToUpperWord') // => 'PASCAL TO UPPER WORD'
LuckyCase.toCapitalWordCase('snake_to_capital_word') // => 'Snake To Capital Word'
LuckyCase.toSentenceCase('snake_to_sentence_case') // => 'Snake to sentence case'
LuckyCase.toMixedCase('example_snake_string') // => 'Example-snake_STRING'// converter by type
LuckyCase.convertCase('some_snake', 'PASCAL_CASE') // => 'SomeSnake'// transformers
LuckyCase.toLowerCase('Some_FuckingShit') // => 'some_fuckingshit'
LuckyCase.toUpperCase('Some_FuckingShit') // => 'SOME_FUCKINGSHIT'
LuckyCase.toCapital('example') // => 'Example'
LuckyCase.capitalize('exAmple') // => 'ExAmple'
LuckyCase.decapitalize('ExAmple') // => 'exAmple'
LuckyCase.swapCase('SomeSwappy_Case-Example') // => 'sOMEsWAPPY-cASE_eXAMPLE'
LuckyCase.constantize('some_constant') // => SomeConstant
LuckyCase.constantize('SOME_CONSTANT') // => SomeConstant
LuckyCase.constantize('some/path_example/folder') // => SomePathExampleFolder
LuckyCase.deconstantize(SomeConstant) // => 'someConstant' // default caseType: 'CAMEL_CASE'
LuckyCase.deconstantize(SomeConstant, caseType: 'SNAKE_CASE') // => 'some_constant'// identifiers
LuckyCase.case('this_can_only_be_snake_case') // => 'SNAKE_CASE'
LuckyCase.cases('validformultiple') // => [ 'SNAKE_CASE', 'CAMEL_CASE', 'DASH_CASE', 'WORD_CASE' ]// checkers
LuckyCase.isSnakeCase('valid_snake_case') // => true
LuckyCase.isUpperSnakeCase('UPPER_SNAKE') // => true
LuckyCase.isPascalCase('PascalCase') // => true
LuckyCase.isCamelCase('toCamelCase') // => true
LuckyCase.isDashCase('dash-case') // => true
LuckyCase.isUpperDashCase('DASH-CASE') // => true
LuckyCase.isTrainCase('Train-Case') // => true
LuckyCase.isWordCase('word case') // => true
LuckyCase.isUpperWordCase('UPPER WORD CASE') // => true
LuckyCase.isCapitalWordCase('Capital Word Case') // => true
LuckyCase.isSentenceCase('Sentence case string') // => true
LuckyCase.isMixedCase('mixed_Case') // => true
LuckyCase.isUpperCase('UPPER50984') // => true
LuckyCase.isLowerCase('lower_cheese') // => true
LuckyCase.isCapital('Some') // => true
LuckyCase.isCapitalized('some') // => false
LuckyCase.isNotCapital('soMe') // => true
LuckyCase.isDecapitalized('somE') // => true
LuckyCase.isValidCaseType('SNAKE_CASE') // => true
LuckyCase.isValidCaseType('APPLE_CASE') // => false
LuckyCase.isValidCaseString('validString') // => true
LuckyCase.isValidCaseString('1nV4lid$tring') // => false
```### Approach 2: Monkey patch the string class
With monkey patching you can access the same methods (except `deconstantize`, `isValidCaseType`) of LuckyCase directly from strings.
Because the methods `case` and `cases` are so general and could lead to conflicts, they are called `letterCase` and `letterCases` at strings.
```javascript
// node js
const LuckyCase = require('lucky-case/string');
// browserlet a = 'ExampleString'
a.isPascalCase() // => true
a.toSnakeCase() // => 'example_string'
a // => 'ExampleString'// identifiers
// got a other method name here because 'case' might be to common and cause conflicts
b = 'example'
b.letterCase() // => 'SNAKE_CASE'
b.letterCases() // => [ 'SNAKE_CASE', 'CAMEL_CASE', 'DASH_CASE', 'WORD_CASE' ]
```### Option 1: node js yarn
In your project root directory execute the following command:
```bash
yarn add lucky-case
```### Option 2: node js npm
In your project root directory execute the following command:
```bash
npm install lucky-case
```### Option 3: Browser
Download the latest `lucky-case.min.js` or `lucky-case.string.min.js` (string monkey patching version) from the [release page](https://github.com/magynhard/lucky-case/releases) and
put it in an appropriate folder of your project, e.g. `js/lib`
and reference it with an script tag in your project:
```html```
Optionally you then should add the source file to your build pipeline, if you are using webpack, brunch or any other packager.
## Documentation
Check out the *jsdoc* documentations:
* [LuckyCase static class version](doc/lucky-case.jsdoc.md)
* [LuckyCase string monkey patched version](doc/lucky-case-string.jsdoc.md)Bug reports and pull requests are welcome on GitHub at https://github.com/magynhard/lucky-case. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.