23 lines
		
	
	
		
			425 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			425 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| module.exports = function walk(nodes, cb, bubble) {
 | |
|   var i, max, node, result;
 | |
| 
 | |
|   for (i = 0, max = nodes.length; i < max; i += 1) {
 | |
|     node = nodes[i];
 | |
|     if (!bubble) {
 | |
|       result = cb(node, i, nodes);
 | |
|     }
 | |
| 
 | |
|     if (
 | |
|       result !== false &&
 | |
|       node.type === "function" &&
 | |
|       Array.isArray(node.nodes)
 | |
|     ) {
 | |
|       walk(node.nodes, cb, bubble);
 | |
|     }
 | |
| 
 | |
|     if (bubble) {
 | |
|       cb(node, i, nodes);
 | |
|     }
 | |
|   }
 | |
| };
 |