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
50
51
52
53
54
55
56
57
{
"input": {
"id": "reviewId",
"text": "This is a review.",
"rating" : 5,
"statistics": {
"id": "statsId",
"feedbackCount": "10"
},
"author": [
{
"id": "authorId",
"name": "Author Name",
"other" : "this should not pass thru"
}
]
},
// I want to
// 1) "rename" statistics
// 2) pass thru author id
// 3) pass thru everything else
"spec": {
"statistics" : "stats", // "rename" statistics -> stats
"id|text|rating" : "&", // This is nice and compact. Good use of the "|" LHS operator.
"author" : {
"*" :{
"id|name" : "&(2)[&(1)].&" // This is a bit hokey, in that we need to enumerate the entire tree that we came down.
// Note this could have been "author[&1].&"
}
}
},
"expected": {
"id": "reviewId",
"text": "This is a review.",
"rating" : 5,
"author": [
{
"id": "authorId",
"name": "Author Name"
}
],
"stats": {
"id": "statsId",
"feedbackCount": "10"
}
}
}