-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuildExamples.js
56 lines (49 loc) · 1.46 KB
/
buildExamples.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
let fs = require("fs");
let path = require("path");
let examplesPrefix = "ts/examples";
let examples = [
"isotype.js",
"barChart.js",
"sin2D.js",
"sin3D.js",
"sanddance.js",
"squares.js",
"parallelCoordinates.js",
"parallelCoordinates2.js",
"facebookGraph.js",
"facebookGraphD3.js",
"spl.js"
];
let reMetadata = /^[ \t]*\/\/\/[ \t]*([a-zA-Z0-9]+)[ \t]*\:[ \t]*(.*)$/gm;
let allExamples = [];
for(let ex of examples) {
let code = fs.readFileSync(path.join(examplesPrefix, ex), "utf-8");
let a;
let metadata = {
name: "unknown",
viewType: "2D",
dataFile: "",
jsCode: code.replace(/[ \t]*\/\/\/.*/g, "").replace(/^[ \t\n]*/, "").replace(/[ \t\n]*$/, "\n"),
background: [ 1, 1, 1, 1 ]
}
while((a = reMetadata.exec(code)) != null) {
let name = a[1];
let data = a[2];
if(name == "name") metadata.name = data;
if(name == "type") metadata.viewType = data;
if(name == "data") metadata.dataFile = data;
if(name == "background") metadata.background = JSON.parse(data);
}
allExamples.push(metadata);
}
let examplesDotTS = `
export interface ExampleInfo {
name: string;
viewType: "2D" | "3D",
dataFile: string;
jsCode: string;
background: number[];
}
export let examples: ExampleInfo[] = ${JSON.stringify(allExamples, null, 2)};
`;
fs.writeFileSync("ts/examples.ts", examplesDotTS, "utf-8")