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.

39 lines
634 B

4 years ago
/**
* Expose `visit()`.
*/
module.exports = visit;
/**
* Visit `node`'s declarations recursively and
* invoke `fn(declarations, node)`.
*
* @param {Object} node
* @param {Function} fn
* @api private
*/
function visit(node, fn){
node.rules.forEach(function(rule){
// @media etc
if (rule.rules) {
visit(rule, fn);
return;
}
// keyframes
if (rule.keyframes) {
rule.keyframes.forEach(function(keyframe){
fn(keyframe.declarations, rule);
});
return;
}
// @charset, @import etc
if (!rule.declarations) return;
fn(rule.declarations, node);
});
};