IOweb/node_modules/@iconify/tools/lib/css/parser/export.cjs
2026-07-03 15:07:38 -05:00

37 lines
1 KiB
JavaScript

'use strict';
const tab = " ";
const nl = "\n";
function tokensToString(tree) {
let compact = true;
for (let i = 0; i < tree.length; i++) {
if (tree[i].type !== "rule") {
compact = false;
break;
}
}
return tree.map((token) => {
return parseToken(token, compact, 0);
}).join("");
}
function parseToken(token, compact, depth) {
let content;
switch (token.type) {
case "rule": {
return (compact ? "" : tab.repeat(depth)) + token.prop + (compact ? ":" : ": ") + token.value + ";" + (compact ? "" : nl);
}
case "at-rule": {
content = `@${token.rule} ${token.value}`.trim();
break;
}
case "selector": {
content = token.selectors.join(compact ? "," : ", ");
}
}
const children = token.children.map((item) => {
return parseToken(item, compact, depth + 1);
});
return (compact ? "" : tab.repeat(depth)) + content + (compact ? "{" : " {" + nl) + children.join("") + (compact ? "}" : tab.repeat(depth) + "}" + nl);
}
exports.tokensToString = tokensToString;