@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
48 lines (47 loc) • 1.54 kB
JavaScript
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