/** * 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); }); };