siblings.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. var test = require('tape');
  2. var traverse = require('../');
  3. test('siblings', function (t) {
  4. var obj = { a : 1, b : 2, c : [ 4, 5, 6 ] };
  5. var res = traverse(obj).reduce(function (acc, x) {
  6. var p = '/' + this.path.join('/');
  7. if (this.parent) {
  8. acc[p] = {
  9. siblings : this.parent.keys,
  10. key : this.key,
  11. index : this.parent.keys.indexOf(this.key)
  12. };
  13. }
  14. else {
  15. acc[p] = {
  16. siblings : [],
  17. key : this.key,
  18. index : -1
  19. }
  20. }
  21. return acc;
  22. }, {});
  23. t.same(res, {
  24. '/' : { siblings : [], key : undefined, index : -1 },
  25. '/a' : { siblings : [ 'a', 'b', 'c' ], key : 'a', index : 0 },
  26. '/b' : { siblings : [ 'a', 'b', 'c' ], key : 'b', index : 1 },
  27. '/c' : { siblings : [ 'a', 'b', 'c' ], key : 'c', index : 2 },
  28. '/c/0' : { siblings : [ '0', '1', '2' ], key : '0', index : 0 },
  29. '/c/1' : { siblings : [ '0', '1', '2' ], key : '1', index : 1 },
  30. '/c/2' : { siblings : [ '0', '1', '2' ], key : '2', index : 2 }
  31. });
  32. t.end();
  33. });