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