subexpr.js 719 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 'use strict';
  2. var traverse = require('../');
  3. var test = require('tape');
  4. test('subexpr', function (t) {
  5. var obj = ['a', 4, 'b', 5, 'c', 6];
  6. var r = traverse(obj).map(function (x) {
  7. if (typeof x === 'number') {
  8. this.update([x - 0.1, x, x + 0.1], true);
  9. }
  10. });
  11. t.same(obj, ['a', 4, 'b', 5, 'c', 6]);
  12. t.same(r, [
  13. 'a', [3.9, 4, 4.1],
  14. 'b', [4.9, 5, 5.1],
  15. 'c', [5.9, 6, 6.1],
  16. ]);
  17. t.end();
  18. });
  19. test('block', function (t) {
  20. var obj = [[1], [2], [3]];
  21. var r = traverse(obj).map(function (x) {
  22. if (Array.isArray(x) && !this.isRoot) {
  23. if (x[0] === 5) {
  24. this.block();
  25. } else {
  26. this.update([[x[0] + 1]]);
  27. }
  28. }
  29. });
  30. t.same(r, [
  31. [[[[[5]]]]],
  32. [[[[5]]]],
  33. [[[5]]],
  34. ]);
  35. t.end();
  36. });