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