-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
49 lines (48 loc) · 1.86 KB
/
test.js
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
40
41
42
43
44
45
46
47
48
49
const { transform, transformArray } = require('./index');
const { diff } = require(`deep-diff`);
const { inspect } = require('util');
const SAMPLE_INPUT = {
glossary: {
title: 'example glossary',
GlossDiv: {
title: 'S',
GlossList: {
GlossEntry: {
ID: 'SGML',
SortAs: 'SGML',
GlossTerm: 'Standard Generalized Markup Language',
Acronym: 'SGML',
Abbrev: 'ISO 8879:1986',
GlossDef: {
para: 'A meta-markup language, used to create markup languages such as DocBook.',
GlossSeeAlso: ['GML', 'XML'],
},
GlossSee: 'markup',
},
},
},
},
};
// transform / transformObject demo
const TRANSFORMED = transform(SAMPLE_INPUT, obj => (obj.ID ? { ID: { value: obj.ID } } : obj));
const DELETED = transform(SAMPLE_INPUT, obj => (obj.Acronym ? {} : obj));
const MERGED = transform(SAMPLE_INPUT, obj => (obj.ID ? { GlossDef: { ID: obj.ID } } : obj));
const MORE_TRANSFORMED = transform(
SAMPLE_INPUT,
obj =>
obj.GlossSeeAlso && obj.GlossSeeAlso.length && typeof obj.GlossSeeAlso[0] !== 'object'
? { GlossSeeAlso: obj.GlossSeeAlso.reduce((acc, x) => [...acc, { value: x }], []) }
: obj,
);
// transformArray demo
const ARRAY_TRANSFORMED = transformArray(SAMPLE_INPUT, arr => arr.map((x, i) => `${i}-${x}`));
console.log(`### Diff after ID transformed.`);
console.log(inspect(diff(SAMPLE_INPUT, TRANSFORMED)));
console.log(`### Diff after Acronym deleted.`);
console.log(inspect(diff(SAMPLE_INPUT, DELETED)));
console.log(`### Diff after ID merged into GlossDef.`);
console.log(inspect(diff(SAMPLE_INPUT, MERGED)));
console.log(`### Diff after GlossSeeAlso format transformed.`);
console.log(inspect(diff(SAMPLE_INPUT, MORE_TRANSFORMED)));
console.log(`### Diff after array transformed.`);
console.log(inspect(diff(SAMPLE_INPUT, ARRAY_TRANSFORMED)));