1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| var List = require('css-tree').List;
| var walk = require('css-tree').walk;
|
| function processRule(node, item, list) {
| var selectors = node.prelude.children;
|
| // generate new rule sets:
| // .a, .b { color: red; }
| // ->
| // .a { color: red; }
| // .b { color: red; }
|
| // while there are more than 1 simple selector split for rulesets
| while (selectors.head !== selectors.tail) {
| var newSelectors = new List();
| newSelectors.insert(selectors.remove(selectors.head));
|
| list.insert(list.createItem({
| type: 'Rule',
| loc: node.loc,
| prelude: {
| type: 'SelectorList',
| loc: node.prelude.loc,
| children: newSelectors
| },
| block: {
| type: 'Block',
| loc: node.block.loc,
| children: node.block.children.copy()
| },
| pseudoSignature: node.pseudoSignature
| }), item);
| }
| }
|
| module.exports = function disjoinRule(ast) {
| walk(ast, {
| visit: 'Rule',
| reverse: true,
| enter: processRule
| });
| };
|
|