123456789101112131415161718192021222324252627282930313233343536373839 |
- '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();
- });
|