-
Notifications
You must be signed in to change notification settings - Fork 41
Expand file tree
/
Copy pathpreprocess.js
More file actions
86 lines (76 loc) · 2.65 KB
/
preprocess.js
File metadata and controls
86 lines (76 loc) · 2.65 KB
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
const fs = require("fs");
const tree = require("directory-tree");
/// Store list of image files
const files = tree("./static", {
extensions: /\.(jpg|jpeg|pdf|png)$/,
});
fs.writeFileSync("./content/output/files.json", JSON.stringify(files, null, 2));
/// getContributions adapted from components/contributions.js
function getContributions(summary) {
const fileNames = Object.keys(summary.fileMap);
const keys = fileNames.filter((fileName) => {
return fileName.includes("projects") || fileName.includes("publications") || fileName.includes("theses");
});
let contributions = [];
for (let key of keys) {
/// Test if contributions are deactivated: contributions must include a title:
if(Object.keys(summary.fileMap[key]).includes("title")){
console.log(key)
contributions.push(summary.fileMap[key]);
}
else{
delete summary.fileMap[key]
}
}
contributions = contributions.sort((a, b) => {
return new Date(b.date) - new Date(a.date);
});
return contributions;
}
/// getPeople adapted from components/contributions.js
function getPeople(summary) {
const fileNames = Object.keys(summary.fileMap);
const keys = fileNames.filter((fileName) => {
return fileName.includes("people");
});
let people = [];
for (let key of keys) {
let id = key.split("/")[3].replace(".json", "");
let person = Object.assign(summary.fileMap[key], { id: id });
people.push(person);
}
const names = people.map((person) => person.name);
const namesId = {};
for (let person of people) {
namesId[person.name] = person.id;
}
return people;
}
/// Extend contributions with affiliated labs from authors
let summary = require("./content/output/summary.json");
let contributions = getContributions(summary);
const people = getPeople(summary);
contributions.forEach((contribution, p) => {
let labs = [];
let authors = contribution.authors || [contribution.author, ...contribution.advisors] // do not parse committee for lab affiliation
authors.forEach((author) => {
let person = people.find((p) => p.name == author);
if (person !== undefined && person.labs !== undefined) {
labs = labs.concat(person.labs);
labs = [...new Set(labs)].sort();
}
});
if (labs.length > 0) {
console.log(`Adding labs "${labs}" to "${contribution.dir}/${contribution.base}"`);
contribution.labs = labs;
fs.writeFileSync(
"./" + contribution.dir + "/" + contribution.base,
JSON.stringify(contribution, null, 2)
);
summary["fileMap"]["${contribution.dir}/${contribution.base}"] = contribution;
}
});
fs.writeFileSync(
"./content/output/summary.json",
JSON.stringify(summary, null, 2)
);