Website/lib/lab_metadata.rb

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