Sha256: 6cdff81662c9d618b0c7dc4bb86f8e6ad3362dc8e3b13cfaab9216f6e0f123b3
Contents?: true
Size: 1.57 KB
Versions: 2
Compression:
Stored size: 1.57 KB
Contents
require "run_ical/version" Dir[File.expand_path("../run_ical/data/*.rb", __FILE__)].each do |file| require file end require "icalendar" module RunIcal class Generator def self.generate(race_date:, program:) unless RunIcal::Data.constants.include?(program.to_sym) raise ArgumentError, "#{program} is unsupported" end program = program.to_sym new(race_date: race_date, program: program).generate end def initialize(race_date:, program:) @race_date = race_date @program = RunIcal::Data.const_get(program) end def generate description = @program.const_get(:DESCRIPTION) data = @program.const_get(:DATA) cal = Icalendar::Calendar.new cal.x_wr_calname = "#{description} for #{@race_date}" start_date_padding = @race_date.saturday? ? 2 : 1 start_date = @race_date - (data.size - start_date_padding).days date_list = (start_date..@race_date).to_a date_list.each.with_index do |date, index| activity = data[index][:activity] if activity =~ /rest/i && @race_date.saturday? && index == date_list.size - 1 activity = data[index + 1][:activity] end cal.event do |e| e.dtstart = Icalendar::Values::Date.new(date) e.dtend = Icalendar::Values::Date.new(date) e.summary = activity e.ip_class = "PUBLIC" e.alarm do |a| a.summary = activity a.trigger = "-P1DT0H0M0S" # 1 day before end end end cal.publish cal.to_ical end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
run_ical-0.4.3 | lib/run_ical.rb |
run_ical-0.4.2 | lib/run_ical.rb |