12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 'use strict';
- const { isRoot, isAtRule, isRule } = require('./typeGuards');
- function isContainerNode(node) {
- return isRule(node) || isAtRule(node) || isRoot(node);
- }
- module.exports = function eachDeclarationBlock(root, callback) {
-
- function each(statement) {
- if (!isContainerNode(statement)) return;
- if (statement.nodes && statement.nodes.length) {
-
- const decls = [];
- for (const node of statement.nodes) {
- if (node.type === 'decl') {
- decls.push(node);
- }
- each(node);
- }
- if (decls.length) {
- callback(decls.forEach.bind(decls));
- }
- }
- }
- each(root);
- };
|