You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
programme/source/index.ics.erb

41 lines
1022 B

<%=
require 'icalendar'
def merge(day, time)
hour, min = time.split ':'
date = DateTime.new day.year, day.month, day.mday, hour.to_i, min.to_i, 0, 'CEST'
Icalendar::Values::DateTime.new date
end
planning = YAML.load File.read File.join Middleman::Application.root, 'config/current.yml'
cal = Icalendar::Calendar.new
cal.append_custom_property 'NAME', 'PSES 2018'
LOCATIONS = {
cinema: 'Salle cinéma',
hall: 'Accueil',
town: 'Village asso'
}
planning.each do |day, events|
events.each do |location, events|
events.each do |event|
from = event[:from]
to = event[:to]
title = event[:title]
cal.event do |e|
e.uid = "urn:sha1:#{Digest::SHA1.hexdigest title}"
e.dtstart = merge day, from
e.dtend = merge day, to
e.organizer = Icalendar::Values::CalAddress.new nil, cn: event[:author]
e.summary = title
e.description = event[:description]
e.location = LOCATIONS[location]
end
end
end
end
cal.to_ical
%>