You cannot 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
JavaScript
37 lines
865 B
JavaScript
6 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();
|
||
|
});
|