Scule
🧵 String Case Utils
Install / Use
/learn @unjs/SculeREADME
🧵 Scule
<!--  -->Install
Install using npm or yarn:
npm i scule
Import:
// 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:
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:
camelCase("foo-bar_baz");
// fooBarBaz
kebabCase(str)
Splits string and joins by kebab-case convention:
kebabCase("fooBar_Baz");
// foo-bar-baz
Notice: It does not preserve case.
snakeCase
Splits string and joins by snake_case convention:
snakeCase("foo-barBaz");
// foo_bar_baz
flatCase
Splits string and joins by flatcase convention:
flatCase("foo-barBaz");
// foobarbaz
trainCase(str, opts?: { normalize })
Split string and joins by Train-Case (a.k.a. HTTP-Header-Case) convention:
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.
titleCase("this-IS-aTitle");
// This is a Title
upperFirst(str)
Converts first character to upper case:
upperFirst("hello world!");
// Hello world!
lowerFirst(str)
Converts first character to lower case:
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
- Enable Corepack using corepack enable
- Install dependencies using pnpm install
- Run interactive tests using pnpm dev
License
<!-- Badges -->Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
