UNPKG

detect-case

Version:

Detects the casing of the input string (camelcase, lowercase, snakecase etc).

55 lines (54 loc) 2.1 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // index.ts var WORD_SPLIT_REGEX_STRICT = /([\p{Lu}]+[\p{Ll}]*|[\p{Ll}]+|[\p{N}]+)/gu; var WORD_SPLIT_REGEX = /([\p{Lu}(.,-]+[\p{Ll})]*|[\p{Ll}()]+|[\p{N}()]+)/gu; var splitString = /* @__PURE__ */ __name((input, strict = true) => { const regex = strict ? WORD_SPLIT_REGEX_STRICT : WORD_SPLIT_REGEX; return input ? (String(input).match(regex) || []).filter(Boolean) : []; }, "splitString"); var isPascalCase = /* @__PURE__ */ __name((input) => { return /^([A-Z][a-zA-Z]*)+$/.test(input); }, "isPascalCase"); var detectCase = /* @__PURE__ */ __name((input) => { if (typeof input !== "string") { throw new TypeError("Expected input to be a string"); } if (!input) return "unknown"; if (!/[a-z]/i.test(input)) return "unknown"; if (input.includes("_")) { if (/^([A-Z][A-Z0-9_]+)+$/.test(input)) return "uppersnake"; if (/^([a-z][a-z0-9_]+)+$/.test(input)) return "snakecase"; return "mixedcase"; } if (input.includes("-")) { if (/^([a-z][a-z0-9-]+)+$/.test(input)) return "kebabcase"; return "mixedcase"; } if (/^[a-z ]+$/.test(input)) return "lowercase"; if (/^[A-Z][A-Z0-9_]*$/.test(input)) return "uppercase"; const words = input.split(/\s+/); if (words.length > 1 && words.every((word) => isPascalCase(word))) { return "titlecase"; } if (words.length > 1 && (/^[0-9]+$/.test(words[0]) && isPascalCase(words[1]))) { return "titlecase"; } if (words.length > 1 && isPascalCase(words[0])) { return "sentencecase"; } if (isPascalCase(input)) return "pascalcase"; if (/^(?:[0-9]+\s+)?(?:[A-Z]\w*\s+)+$/.test(input)) return "titlecase"; if (/^([a-z][a-z0-9]*[A-Z]+[a-z0-9]*)+$/.test(input)) return "camelcase"; if (/[.!?;:,](?!(?:\s|$))/.test(input)) return "unknown"; return "mixedcase"; }, "detectCase"); var index_default = detectCase; export { WORD_SPLIT_REGEX, WORD_SPLIT_REGEX_STRICT, index_default as default, detectCase, splitString }; //# sourceMappingURL=index.mjs.map