(ast: SelectorAstNode[], minify = false)
| 100 | } |
| 101 | |
| 102 | export function toCss(ast: SelectorAstNode[], minify = false) { |
| 103 | let css = '' |
| 104 | for (let node of ast) { |
| 105 | switch (node.kind) { |
| 106 | case 'selector': |
| 107 | case 'value': { |
| 108 | css += node.value |
| 109 | break |
| 110 | } |
| 111 | case 'combinator': { |
| 112 | if (minify || node.value === ' ') { |
| 113 | css += node.value |
| 114 | } else { |
| 115 | css += ` ${node.value} ` |
| 116 | } |
| 117 | break |
| 118 | } |
| 119 | |
| 120 | case 'function': { |
| 121 | css += `${node.value}(${toCss(node.nodes, minify)})` |
| 122 | break |
| 123 | } |
| 124 | case 'complex': |
| 125 | case 'compound': { |
| 126 | css += toCss(node.nodes, minify) |
| 127 | break |
| 128 | } |
| 129 | case 'list': { |
| 130 | css += node.nodes.map((node) => toCss([node], minify)).join(minify ? ',' : ', ') |
| 131 | break |
| 132 | } |
| 133 | } |
| 134 | } |
| 135 | return css |
| 136 | } |
| 137 | |
| 138 | const BACKSLASH = 0x5c |
| 139 | const CLOSE_BRACKET = 0x5d |
no test coverage detected