https://github.com/pedsmoreira/casex
All in one, self expressive pattern for string case styles
https://github.com/pedsmoreira/casex
nodejs string-manipulation string-styling typescript
Last synced: about 1 year ago
JSON representation
All in one, self expressive pattern for string case styles
- Host: GitHub
- URL: https://github.com/pedsmoreira/casex
- Owner: pedsmoreira
- License: mit
- Created: 2018-04-03T20:09:29.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-01-13T21:57:35.000Z (over 2 years ago)
- Last Synced: 2024-10-16T03:31:53.277Z (over 1 year ago)
- Topics: nodejs, string-manipulation, string-styling, typescript
- Language: TypeScript
- Homepage:
- Size: 249 KB
- Stars: 106
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# casex
All in one, self expressive pattern for string case styles
## Introduction
_casex_ is a function that applies a case style given a pattern.
Instead of having a specific function for each case style, I provide a self-expressive pattern that represent the desired output. For example, kebab-case can be represented as `ca-se` and title case as `Ca Se`.
## Install
```sh
npm install --save casex
```
## Usage
```js
import { casex } from "casex";
casex({ text: "your text", pattern: "ca-se" }); // your-text
```
## How it works
### 1. Breaking text into words
By default, _casex_ uses capitalizations (`A-Z`), `-`, `_` and spaces (`\s`) to break the text into words.
Let's take for example `i_am the-real JohnDoe`:
- `i`: 1st word
- `am`: 2nd+ word
- `the`: 2nd+ word
- `real`: 2nd+ word
- `John`: 2nd+ word
- `Doe`: 2nd+ word
#### 1.1 Custom delimiters
The default will likely work for most of your cases, but if you wish, you can provide custom delimiters:
```js
casex({ text: "foo.bar,baz", pattern: "Ca Se", delimiters: ".," }); // Foo Bar Baz
```
_Note: The default delimiters are: `A-Z\\s_-`.
### 2. Applying capitalization pattern and gluing words together
Let's take for example `Ca_se`:
- `C`: first letter of the first word
- `a`: second and subsequent letters of the first word
- `_`: anything between the first two and last two letters is `glue` and will be repeted between words
- `s`: first letter of the second and subsequent words
- `e`: second and subsequent letters of the second and subsequent words
_Note: You can use any other letters to describe the pattern, such as `aa$aa` or `na_me`. What matters is that it takes the first two and last two letters for checking capitalization and whatever is in the middle is "glue"._
#### 2.1 Special transformations
Besides using lower and uppercase letters, you can also use:
- `*`: Do not change word
- `-`: Remove word
## Examples
For these examples I'll use the text `i_am the-real JohnDoe`
**lowercase**
- Pattern: case
- Output: iamtherealjohndoe
**UPPERCASE**
- Pattern: CASE
- Output: IAMTHEREALJOHNDOE
**snake_case**
- Pattern: ca_se
- Output: i_am_the_real_john_doe
**spinal-case**
- Pattern: ca-se
- Output: i-am-the-real-john-doe
**camelCase**
- Pattern: caSe
- Output: iAmTheRealJohnDoe
**UpperCamelCase**
- Pattern: CaSe
- Output: IAmTheRealJohnDoe
**Sentence case**
- Pattern: Ca se
- Output: I am the real john doe
**Title Case**
- Pattern: Ca Se
- Output: I Am The Real John Doe
**Weird Example**
- Pattern: Ca12 34Se
- Output: I12 34Am12 34The12 34Real12 34John12 34Doe
### Examples with special characters
**Capitalize first letter**
- Pattern: C\* \*\*
- Output: I am the real John Doe
**Initials**
- Input: John Doe
- Pattern: C-S-
- Output: JD
## Previous versions
Although for most cases it will work just fine, _casex_ 4.x is not fully compatible previous versions. If you need previous docs please refer to:
- [v0.x](https://github.com/pedsmoreira/casex/tree/0.x)
- [v1.x](https://github.com/pedsmoreira/casex/tree/1.x)
- [v2.x](https://github.com/pedsmoreira/casex/tree/2.x)
- [v3.x](https://github.com/pedsmoreira/casex/tree/3.x)