| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- # 🧵 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)
- <!-- Badges -->
- [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
|