51 lines
1.3 KiB
Ruby
51 lines
1.3 KiB
Ruby
|
|
|
|
module LabMetadata
|
|
|
|
def LabMetadata.build_people_metadata
|
|
members = $db["lab/members"]
|
|
|
|
members.each do |name, data|
|
|
data["link_relative"] = not(data.has_key? "link")
|
|
data["name"] = name
|
|
page = "/people/#{name.downcase.gsub(/ /, "_").gsub(/[^a-z0-9A-Z_]/, "")}.html"
|
|
unless data.has_key? "link"
|
|
data["link"] = page
|
|
end
|
|
data["page"] = page
|
|
end
|
|
end
|
|
|
|
def LabMetadata.create_people_pages
|
|
known_pages =
|
|
GemSmith::all_outputs.
|
|
delete_if { |x| not /people\/.*\.html$/ =~ x }
|
|
|
|
$db["lab/members"].each do |name, data|
|
|
unless known_pages.include? data["page"]
|
|
GemSmith::add_file_string(data["page"], "#{name} hasn't written anything yet.")
|
|
end
|
|
GemSmith::metadata_for(data["page"]).merge!({
|
|
title: name,
|
|
name: name
|
|
}.merge(data))
|
|
end
|
|
end
|
|
|
|
def LabMetadata.link_for(person)
|
|
data = $db["lab/members"][person]
|
|
if data.nil? then person else "<a class=\"lab_member\" href=\"#{GemSmith::root_path(data["link"])}\">#{person}</a>" end
|
|
end
|
|
|
|
def LabMetadata.publications_for(person)
|
|
$db["publications"].
|
|
where { |pub| pub["authors"].include? person }
|
|
end
|
|
|
|
def LabMetadata.members_on_project(project)
|
|
$db["lab/members"].values.
|
|
where { |m| m.fetch("projects", []).include? project }.
|
|
map { |m| m["name"] }
|
|
end
|
|
|
|
end |