93 lines
3.1 KiB
Ruby
93 lines
3.1 KiB
Ruby
require "text.rb"
|
|
|
|
module UBSOE
|
|
|
|
def UBSOE::generate_yearly_report(since_year)
|
|
|
|
puts "-------------------------------------------------------"
|
|
puts "| Publications |"
|
|
puts "-------------------------------------------------------"
|
|
puts ""
|
|
#
|
|
# Include journal/conference/publication titles, authors,
|
|
# event dates and locations, acceptance rate and number
|
|
# of pages as appropriate
|
|
#
|
|
|
|
pubs = $db["publications"]
|
|
pubs += $db["cv/okennedy/publications_submitted"]
|
|
.select { |pub| pub["status"] == "submitted"}
|
|
.map { |pub| pub.merge({ "type" => "submitted" }) }
|
|
|
|
puts(pubs
|
|
.select { |pub| pub["year"].to_i >= since_year.to_i }
|
|
.map { |pub|
|
|
pub_string = [
|
|
"\"#{pub["title"]}\"",
|
|
pub["authors"].join(", "),
|
|
LabMetadata.venue_name(pub),
|
|
]
|
|
|
|
v = LabMetadata.complete_venue(pub)
|
|
pub_string.push("#{pub["length"]} pages") if pub.has_key? "length"
|
|
pub_string.push("Acceptance rate #{LabMetadata.venue_selectivity(pub)}") unless v["type"] == "techreport"
|
|
pub_string.push(v["location"]) if v.has_key? "location"
|
|
pub_string.push(v["date"]) if v.has_key? "date"
|
|
|
|
pub_string.join("\n")
|
|
}.join("\n\n------\n\n")
|
|
)
|
|
puts ""
|
|
puts ""
|
|
puts "-------------------------------------------------------"
|
|
puts "| Presentations |"
|
|
puts "-------------------------------------------------------"
|
|
puts ""
|
|
puts(
|
|
$db["cv/okennedy/talks"]
|
|
.select { |talk| if /([0-9]{4})/ =~ talk["date"] then $1.to_i >= since_year end }
|
|
.map { |talk| "#{talk["talk"]}\n#{talk["date"]}\n#{talk["venue"]}" }
|
|
.join("\n\n------\n\n")
|
|
)
|
|
puts ""
|
|
puts ""
|
|
puts "-------------------------------------------------------"
|
|
puts "| Advising |"
|
|
puts "-------------------------------------------------------"
|
|
puts ""
|
|
puts(
|
|
$db["lab/members"]
|
|
.map { |k, person|
|
|
"#{person["name"]}\n#{person["ubit"]}\n#{person["status"]}"
|
|
}
|
|
.join("\n\n------\n\n")
|
|
)
|
|
puts ""
|
|
puts ""
|
|
puts "-------------------------------------------------------"
|
|
puts "| Grants |"
|
|
puts "-------------------------------------------------------"
|
|
puts ""
|
|
puts(
|
|
$db["cv/okennedy/grants"]
|
|
.select { |grant| grant["status"] == "accepted" }
|
|
.select { |grant| if /([0-9]{4})/ =~ grant["start"] then $1.to_i >= since_year end }
|
|
.map { |grant|
|
|
title = grant["title"]
|
|
amount = grant["amount"]
|
|
agency = grant["agency"]
|
|
effort =
|
|
case grant.fetch("effort", nil)
|
|
when /([0-9]+)%/ then $1.to_f / 100.0 * amount
|
|
when nil then nil
|
|
else raise "Unknown effort format #{grant["effort"]}"
|
|
end
|
|
"#{title}\n#{agency}\n#{TextUtils.format_money(amount)}#{if effort.nil? then "" else " (#{TextUtils.format_money(effort)} by effort)" end}"
|
|
}
|
|
)
|
|
puts
|
|
puts
|
|
end
|
|
|
|
end
|