-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnested-directory.js
111 lines (107 loc) · 4.16 KB
/
nested-directory.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
const appendFilePath = (directory, parentDirectory = "") => {
const { contents: directoryContents, name: directoryName } = directory;
return directoryContents.map(item => {
const { name, type } = item;
return type === "directory"
? { ...item, contents : appendFilePath(item, `${parentDirectory}/${name}`) }
: { ...item, path: `/${parentDirectory}/${name}` };
});
};
const transformData = games => {
return games.map(game => {
const { type, name } = game;
return type === "directory"
? { ...game, contents: appendFilePath(game, name) }
: { ...game, path: `/${name}` };
});
};
const games = [
{
type: "directory",
name: "rock-the-dock",
contents: [
{ type: "file", name: "appmanifest.json" },
{ type: "file", name: "c2runtime.js" },
{ type: "file", name: "data.js" },
{ type: "file", name: "favicon.png" },
{ type: "file", name: "games_SDK.js" },
{ type: "file", name: "gamezop.js" },
{ type: "file", name: "icon-114.png" },
{ type: "file", name: "icon-128.png" },
{ type: "file", name: "icon-16.png" },
{ type: "file", name: "icon-256.png" },
{ type: "file", name: "icon-32.png" },
{ type: "file", name: "icon.png" },
{
type: "directory",
name: "icons",
contents: [
{ type: "file", name: "icon16x16.png" },
{ type: "file", name: "icon48x48.png" },
{ type: "file", name: "icon60x60.png" },
{ type: "file", name: "RocktheDock_128.png" }
]
},
{
type: "directory",
name: "images",
contents: [
{ type: "file", name: "base-sheet0.png" },
{ type: "file", name: "bg-sheet0.png" },
{ type: "file", name: "blank-sheet0.png" },
{ type: "file", name: "buttons2-sheet0.png" },
{ type: "file", name: "camera-sheet0.png" },
{ type: "file", name: "clound-sheet0.png" },
{ type: "file", name: "defaultblock-sheet0.png" },
{ type: "file", name: "defaultblock-sheet1.png" },
{ type: "file", name: "defaultfnt.png" },
{ type: "file", name: "fin-sheet0.png" },
{ type: "file", name: "gre.png" },
{ type: "file", name: "loaderbg-sheet0.png" },
{ type: "file", name: "logo_loadedtiled.png" },
{ type: "file", name: "logo_loading-sheet0.png" },
{ type: "file", name: "particles.png" },
{ type: "file", name: "placementmsg-sheet0.png" },
{ type: "file", name: "rotate-sheet0.png" },
{ type: "file", name: "seagull-sheet0.png" },
{ type: "file", name: "seagull-sheet1.png" },
{ type: "file", name: "shipcabin-sheet0.png" },
{ type: "file", name: "stars-sheet0.png" },
{ type: "file", name: "startblock-sheet0.png" },
{ type: "file", name: "sun-sheet0.png" },
{ type: "file", name: "title-sheet0.png" },
{ type: "file", name: "watereffect-sheet0.png" },
{ type: "file", name: "water-sheet0.png" }
]
},
{ type: "file", name: "index.html" },
{ type: "file", name: "jiogames.js" },
{ type: "file", name: "jquery-2.1.1.min.js" },
{ type: "file", name: "loading-logo.png" },
{ type: "file", name: "manifest.webapp" },
{
type: "directory",
name: "media",
contents: [
{ type: "file", name: "a1_07138.m4a" },
{ type: "file", name: "a1_07138.ogg" },
{ type: "file", name: "a5_02038.m4a" },
{ type: "file", name: "a5_02038.ogg" },
{ type: "file", name: "a5_02040.m4a" },
{ type: "file", name: "a5_02040.ogg" },
{ type: "file", name: "a5_04117.m4a" },
{ type: "file", name: "a5_04117.ogg" },
{ type: "file", name: "bgloop1.m4a" },
{ type: "file", name: "bgloop1.ogg" },
{ type: "file", name: "star1.m4a" },
{ type: "file", name: "star1.ogg" }
]
},
{ type: "file", name: "offline.appcache" },
{ type: "file", name: "offlineClient.js" },
{ type: "file", name: "offline.js" },
{ type: "file", name: "sw.js" }
]
}
];
console.log(transformData(games));