Download node_modules/@isaacs/cliui/dist/esm/string-width/index.js from metarm/QMetaRam: direct link, hf CLI and curl.
- Browser
- Download file 1.36 kB
-
https://huggingface.co/metarm/QMetaRam/resolve/main/node_modules/%40isaacs/cliui/dist/esm/string-width/index.js
- Command line
-
hf download hf://metarm/QMetaRam/node_modules/@isaacs/cliui/dist/esm/string-width/index.js
-
curl -L -o index.js https://huggingface.co/metarm/QMetaRam/resolve/main/node_modules/%40isaacs/cliui/dist/esm/string-width/index.js
1.36 kB
| import { stripAnsi } from "../strip-ansi/index.js"; | |
| import { eastAsianWidth } from "../eastasianwidth/index.js"; | |
| import { emojiRegex } from "../emoji-regex/index.js"; | |
| export function stringWidth(str, options = {}) { | |
| if (typeof str !== "string" || str.length === 0) { | |
| return 0; | |
| } | |
| options = { | |
| ambiguousIsNarrow: true, | |
| ...options, | |
| }; | |
| str = stripAnsi(str); | |
| if (str.length === 0) { | |
| return 0; | |
| } | |
| str = str.replace(emojiRegex(), " "); | |
| const ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2; | |
| let width = 0; | |
| for (const character of str) { | |
| const codePoint = character.codePointAt(0); | |
| // Ignore control characters | |
| if (!codePoint || | |
| codePoint <= 0x1f || | |
| (codePoint >= 0x7f && codePoint <= 0x9f)) { | |
| continue; | |
| } | |
| // Ignore combining characters | |
| if (codePoint >= 0x300 && codePoint <= 0x36f) { | |
| continue; | |
| } | |
| const code = eastAsianWidth(character); | |
| switch (code) { | |
| case "F": | |
| case "W": | |
| width += 2; | |
| break; | |
| case "A": | |
| width += ambiguousCharacterWidth; | |
| break; | |
| default: | |
| width += 1; | |
| } | |
| } | |
| return width; | |
| } | |
| //# sourceMappingURL=index.js.map |