format.js 1.1 KB

123456789101112131415161718
  1. import { camelCase, startCase, upperCase, lowerCase, upperFirst, } from 'lodash-es';
  2. export { lowerFirst, upperFirst, camelCase } from 'lodash-es';
  3. // @see: https://medium.com/@robertsavian/javascript-case-converters-using-lodash-4f2f964091cc
  4. const cacheStringFunction = (fn) => {
  5. const cache = Object.create(null);
  6. return ((str) => {
  7. const hit = cache[str];
  8. return hit || (cache[str] = fn(str));
  9. });
  10. };
  11. export const kebabCase = cacheStringFunction((s) => s.replace(/\B([A-Z])/g, '-$1').toLowerCase());
  12. export const pascalCase = cacheStringFunction((s) => startCase(camelCase(s)).replace(/ /g, ''));
  13. export const constantCase = cacheStringFunction((s) => upperCase(s).replace(/ /g, '_'));
  14. export const dotCase = cacheStringFunction((s) => lowerCase(s).replace(/ /g, '.'));
  15. export const pathCase = cacheStringFunction((s) => lowerCase(s).replace(/ /g, '/'));
  16. export const sentenceCase = cacheStringFunction((s) => upperFirst(lowerCase(s)));
  17. export const titleCase = cacheStringFunction((s) => startCase(camelCase(s)));
  18. //# sourceMappingURL=format.js.map