# 🧵 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)` 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. ### `camelCase` 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 ``` ### `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