format.mjs 971 B

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