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.
38 lines
634 B
38 lines
634 B
|
|
/** |
|
* 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); |
|
}); |
|
};
|
|
|