123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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
- });
- };
|