Website/old/stages/build-members.js

78 lines
2.1 KiB
JavaScript

module.exports = plugin;
var formatName = require("../lib/format-name.js");
var linkName = require("../lib/link-name.js");
var push = function(arr, key, elem)
{
if(typeof arr[key] == 'undefined') { arr[key] = [] }
arr[key].push(elem)
}
function plugin() {
return function (files, smith, done){
var members = smith.metadata().odinLab.members;
var alumni = smith.metadata().odinLab.alumni;
var studentsByProject = {}
var lab = []
for(name in members){
var details = members[name];
lab.push(name)
if(typeof details.name == 'undefined'){
details.name = name;
} else {
lab.push(details.name)
}
if(typeof details.projects != 'undefined')
{
details.projectsFormat = (
"(" +
details.projects.map(function(project){
var projectCapitalized =
project.split("-").map(function(word){
return word.charAt(0).toUpperCase() + word.slice(1);
}).join(" ");
return "<a href='../research/"+project+"/index.html'>"+projectCapitalized+"</a>"
}).join(" | ")
+ ")"
)
for(i in details.projects){
push(studentsByProject, details.projects[i], details.name);
}
}
if(typeof details.link == 'undefined'){
details.link = linkName(name)
details.linkRelative = true;
}
memberLink = linkName(name, ".md")
var memberPage = files[memberLink]
if(memberPage == null){
memberPage = {
contents: name + " hasn't written anything about themselves yet"
}
}
if(typeof memberPage.title == 'undefined'){
memberPage.title = name
}
memberPage.details = details;
files[memberLink] = memberPage;
// console.log(files)
}
for(name in alumni){
var details = alumni[name];
if(typeof details.name == 'undefined'){
details.name = name;
}
}
smith.metadata().labMembers = lab
// console.log(studentsByProject)
smith.metadata().projectStudents = studentsByProject
done()
}
}