You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					37 lines
				
				865 B
			
		
		
			
		
	
	
					37 lines
				
				865 B
			| 
								 
											4 years ago
										 
									 | 
							
								var traverse = require('../');
							 | 
						||
| 
								 | 
							
								var test = require('tape');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('subexpr', function (t) {
							 | 
						||
| 
								 | 
							
								    var obj = [ 'a', 4, 'b', 5, 'c', 6 ];
							 | 
						||
| 
								 | 
							
								    var r = traverse(obj).map(function (x) {
							 | 
						||
| 
								 | 
							
								        if (typeof x === 'number') {
							 | 
						||
| 
								 | 
							
								            this.update([ x - 0.1, x, x + 0.1 ], true);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    t.same(obj, [ 'a', 4, 'b', 5, 'c', 6 ]);
							 | 
						||
| 
								 | 
							
								    t.same(r, [
							 | 
						||
| 
								 | 
							
								        'a', [ 3.9, 4, 4.1 ],
							 | 
						||
| 
								 | 
							
								        'b', [ 4.9, 5, 5.1 ],
							 | 
						||
| 
								 | 
							
								        'c', [ 5.9, 6, 6.1 ],
							 | 
						||
| 
								 | 
							
								    ]);
							 | 
						||
| 
								 | 
							
								    t.end();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('block', function (t) {
							 | 
						||
| 
								 | 
							
								    var obj = [ [ 1 ], [ 2 ], [ 3 ] ];
							 | 
						||
| 
								 | 
							
								    var r = traverse(obj).map(function (x) {
							 | 
						||
| 
								 | 
							
								        if (Array.isArray(x) && !this.isRoot) {
							 | 
						||
| 
								 | 
							
								            if (x[0] === 5) this.block()
							 | 
						||
| 
								 | 
							
								            else this.update([ [ x[0] + 1 ] ])
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    t.same(r, [
							 | 
						||
| 
								 | 
							
								        [ [ [ [ [ 5 ] ] ] ] ],
							 | 
						||
| 
								 | 
							
								        [ [ [ [ 5 ] ] ] ],
							 | 
						||
| 
								 | 
							
								        [ [ [ 5 ] ] ],
							 | 
						||
| 
								 | 
							
								    ]);
							 | 
						||
| 
								 | 
							
								    t.end();
							 | 
						||
| 
								 | 
							
								});
							 |