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 "#{person}" 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