UNPKG

@studiometa/js-toolkit

Version:

A set of useful little bits of JavaScript to boost your project! 🚀

48 lines (47 loc) • 1.54 kB
import { memo } from "../memo.js"; const SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu; const SPLIT_UPPER_UPPER_RE = /(\p{Lu})([\p{Lu}][\p{Ll}])/gu; const DEFAULT_STRIP_REGEXP = /[^\p{L}\d]+/giu; const SPLIT_REPLACE_VALUE = "$1\0$2"; function split(value) { let result = value.trim(); result = result.replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE); result = result.replace(DEFAULT_STRIP_REGEXP, "\0"); let start = 0; let end = result.length; while (result.charAt(start) === "\0") start++; if (start === end) return []; while (result.charAt(end - 1) === "\0") end--; return result.slice(start, end).split(/\0/g); } function delimitedCase(string, delimiter) { return split(string).map((word) => lowerCase(word)).join(delimiter); } function lowerCase(string) { return string.toLowerCase(); } function upperCase(string) { return string.toUpperCase(); } const camelCase = memo(function camelCase2(string) { const result = pascalCase(string); return lowerCase(result[0]) + result.slice(1); }); const pascalCase = memo(function pascalCase2(string) { return split(string).map((word) => upperCase(word[0]) + lowerCase(word.slice(1))).join(""); }); const snakeCase = memo(function snakeCase2(string) { return delimitedCase(string, "_"); }); const dashCase = memo(function dashCase2(string) { return delimitedCase(string, "-"); }); export { camelCase, dashCase, lowerCase, pascalCase, snakeCase, upperCase }; //# sourceMappingURL=changeCase.js.map