camelize.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. const { asciiLowercase } = require("./strings");
  3. // Utility to translate from `border-width` to `borderWidth`.
  4. // NOTE: For values prefixed with webkit, e.g. `-webkit-foo`, we need to provide
  5. // both `webkitFoo` and `WebkitFoo`. Here we only return `webkitFoo`.
  6. exports.dashedToCamelCase = function (dashed) {
  7. if (dashed.startsWith("--")) {
  8. return dashed;
  9. }
  10. let camel = "";
  11. let nextCap = false;
  12. // skip leading hyphen in vendor prefixed value, e.g. -webkit-foo
  13. let i = /^-webkit-/.test(dashed) ? 1 : 0;
  14. for (; i < dashed.length; i++) {
  15. if (dashed[i] !== "-") {
  16. camel += nextCap ? dashed[i].toUpperCase() : dashed[i];
  17. nextCap = false;
  18. } else {
  19. nextCap = true;
  20. }
  21. }
  22. return camel;
  23. };
  24. // Utility to translate from `borderWidth` to `border-width`.
  25. exports.camelCaseToDashed = function (camelCase) {
  26. if (camelCase.startsWith("--")) {
  27. return camelCase;
  28. }
  29. const dashed = asciiLowercase(camelCase.replace(/(?<=[a-z])[A-Z]/g, "-$&"));
  30. if (/^webkit-/.test(dashed)) {
  31. return `-${dashed}`;
  32. }
  33. return dashed;
  34. };