format.cjs 995 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. 'use strict';
  2. const format = {
  3. selectorStart: {
  4. compressed: "{",
  5. compact: " {",
  6. expanded: " {"
  7. },
  8. selectorEnd: {
  9. compressed: "}",
  10. compact: "; }\n",
  11. expanded: ";\n}\n"
  12. },
  13. rule: {
  14. compressed: "{key}:",
  15. compact: " {key}: ",
  16. expanded: "\n {key}: "
  17. }
  18. };
  19. function formatCSS(data, mode = "expanded") {
  20. const results = [];
  21. for (let i = 0; i < data.length; i++) {
  22. const { selector, rules } = data[i];
  23. const fullSelector = selector instanceof Array ? selector.join(mode === "compressed" ? "," : ", ") : selector;
  24. let entry = fullSelector + format.selectorStart[mode];
  25. let firstRule = true;
  26. for (const key in rules) {
  27. if (!firstRule) {
  28. entry += ";";
  29. }
  30. entry += format.rule[mode].replace("{key}", key) + rules[key];
  31. firstRule = false;
  32. }
  33. entry += format.selectorEnd[mode];
  34. results.push(entry);
  35. }
  36. return results.join(mode === "compressed" ? "" : "\n");
  37. }
  38. exports.formatCSS = formatCSS;