You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							42 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							1.1 KiB
						
					
					
				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 | 
						|
    }); | 
						|
};
 | 
						|
 |