39 lines
634 B
JavaScript
39 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);
|
||
|
});
|
||
|
};
|