1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | function visitRelatedShapeNames(startingShape, shapeMap) {
|
8 | var shape = shapeMap[startingShape];
|
9 | if (shape.visited) {
|
10 |
|
11 | return;
|
12 | }
|
13 |
|
14 | shape.visited = true;
|
15 |
|
16 | if (['structure', 'map', 'list'].indexOf(shape.type) < 0) {
|
17 |
|
18 | return;
|
19 | }
|
20 |
|
21 | if (shape.type === 'structure') {
|
22 | var members = shape.members;
|
23 | for (var memberName of Object.keys(members)) {
|
24 | var memberShapeName = members[memberName].shape;
|
25 | visitRelatedShapeNames(memberShapeName, shapeMap);
|
26 | }
|
27 | } else if (shape.type === 'map') {
|
28 | var keyShape = shape.key.shape;
|
29 | var valueShape = shape.value.shape;
|
30 | visitRelatedShapeNames(keyShape, shapeMap);
|
31 | visitRelatedShapeNames(valueShape, shapeMap);
|
32 | } else if (shape.type === 'list') {
|
33 | var memberShape = shape.member.shape;
|
34 | visitRelatedShapeNames(memberShape, shapeMap);
|
35 | }
|
36 | }
|
37 |
|
38 | module.exports = {
|
39 | visitRelatedShapeNames: visitRelatedShapeNames
|
40 | }; |
\ | No newline at end of file |