Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/unjs/scule
๐งต String Case Utils
https://github.com/unjs/scule
Last synced: 3 months ago
JSON representation
๐งต String Case Utils
- Host: GitHub
- URL: https://github.com/unjs/scule
- Owner: unjs
- License: mit
- Created: 2021-02-16T22:27:40.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-31T14:09:20.000Z (3 months ago)
- Last Synced: 2024-07-31T17:35:42.909Z (3 months ago)
- Language: TypeScript
- Homepage:
- Size: 487 KB
- Stars: 340
- Watchers: 5
- Forks: 10
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-web-dev - scule
README
# ๐งต Scule
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![bundle][bundle-src]][bundle-href]
[![Codecov][codecov-src]][codecov-href]## Install
Install using npm or yarn:
```bash
npm i scule
```Import:
```js
// CommonJS
const { pascalCase } = require("scule");// ESM
import { pascalCase } from "scule";
```**Notice:** You may need to transpile package for legacy environments.
## Utils
### `pascalCase(str, opts?: { normalize })`
Splits string and joins by PascalCase convention:
```ts
pascalCase("foo-bar_baz");
// FooBarBaz
```**Notice:** If an uppercase letter is followed by other uppercase letters (like `FooBAR`), they are preserved. You can use `{ normalize: true }` for strictly following pascalCase convention.
### `camelCase(str, opts?: { normalize })`
Splits string and joins by camelCase convention:
```ts
camelCase("foo-bar_baz");
// fooBarBaz
```### `kebabCase(str)`
Splits string and joins by kebab-case convention:
```ts
kebabCase("fooBar_Baz");
// foo-bar-baz
```**Notice:** It does **not** preserve case.
### `snakeCase`
Splits string and joins by snake_case convention:
```ts
snakeCase("foo-barBaz");
// foo_bar_baz
```### `flatCase`
Splits string and joins by flatcase convention:
```ts
flatCase("foo-barBaz");
// foobarbaz
```### `trainCase(str, opts?: { normalize })`
Split string and joins by Train-Case (a.k.a. HTTP-Header-Case) convention:
```ts
trainCase("FooBARb");
// Foo-Ba-Rb
```**Notice:** If an uppercase letter is followed by other uppercase letters (like `WWWAuthenticate`), they are preserved (=> `WWW-Authenticate`). You can use `{ normalize: true }` for strictly only having the first letter uppercased.
### `titleCase(str, opts?: { normalize })`
With Title Case all words are capitalized, except for minor words.
A compact regex of common minor words (such as `a`, `for`, `to`) is used to automatically keep them lower case.```ts
titleCase("this-IS-aTitle");
// This is a Title
```### `upperFirst(str)`
Converts first character to upper case:
```ts
upperFirst("hello world!");
// Hello world!
```### `lowerFirst(str)`
Converts first character to lower case:
```ts
lowerFirst("Hello world!");
// hello world!
```### `splitByCase(str, splitters?)`
- Splits string by the splitters provided (default: `['-', '_', '/', '.']`)
- Splits when case changes from lower to upper or upper to lower
- Ignores numbers for case changes
- Case is preserved in returned value
- Is an irreversible function since splitters are omitted## Development
- Clone this repository
- Install latest LTS version of [Node.js](https://nodejs.org/en/)
- Enable [Corepack](https://github.com/nodejs/corepack) using corepack enable
- Install dependencies using pnpm install
- Run interactive tests using pnpm dev## License
[MIT](./LICENSE)
[npm-version-src]: https://img.shields.io/npm/v/scule?style=flat&colorA=18181B&colorB=F0DB4F
[npm-version-href]: https://npmjs.com/package/scule
[npm-downloads-src]: https://img.shields.io/npm/dm/scule?style=flat&colorA=18181B&colorB=F0DB4F
[npm-downloads-href]: https://npmjs.com/package/scule
[codecov-src]: https://img.shields.io/codecov/c/gh/unjs/scule/main?style=flat&colorA=18181B&colorB=F0DB4F
[codecov-href]: https://codecov.io/gh/unjs/scule
[bundle-src]: https://img.shields.io/bundlephobia/minzip/scule?style=flat&colorA=18181B&colorB=F0DB4F
[bundle-href]: https://bundlephobia.com/result?p=scule