@knownasrazi/grapheme
v1.0.0
Published
Grapheme cluster and emoji-aware string splitting with accurate length.
Downloads
40
Maintainers
Readme
grapheme
Grapheme cluster and emoji-aware string ops.
Zero dependencies - ~2 KB gzipped - TypeScript - Node + Bun + browser
Install
bun add @knownasrazi/grapheme
npm install @knownasrazi/graphemeUsage
import { graphemeLength, splitGraphemes, graphemeAt, graphemeSlice } from "@knownasrazi/grapheme";
graphemeLength("👨👩👧👦"); // 1 (not 7)
splitGraphemes("a👨👩👧👦c"); // ["a","👨👩👧👦","c"]
graphemeAt("a👨👩👧👦c", 1); // "👨👩👧👦"
graphemeSlice("a👨👩👧👦c", 0, 1); // "a"API
| Export | Description |
| --- | --- |
| splitGraphemes(s) | string -> string[] clusters |
| graphemeLength(s) | cluster count |
| graphemeAt(s,i) | cluster at index |
| graphemeSlice(s, start, end?) | slice by clusters |
| graphemeRanges(s) | { start,end,cluster }[] |
| isSingleGrapheme(s) | s.length === 1 cluster? |
Uses Intl.Segmenter when available, Array.from fallback.
Development
git clone https://github.com/knownasrazi/grapheme.git
cd grapheme
bun install
bun test
bun run build
bun run lintLicense
grapheme - length that counts humans.
