Class: RunIcal::Generator
- Inherits:
-
Object
- Object
- RunIcal::Generator
- Defined in:
- lib/run_ical.rb
Class Method Summary collapse
Instance Method Summary collapse
- #generate ⇒ Object
-
#initialize(race_date:, program:) ⇒ Generator
constructor
A new instance of Generator.
Constructor Details
#initialize(race_date:, program:) ⇒ Generator
Returns a new instance of Generator.
18 19 20 21 |
# File 'lib/run_ical.rb', line 18 def initialize(race_date:, program:) @race_date = race_date @program = RunIcal::Data.const_get(program) end |
Class Method Details
.generate(race_date:, program:) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/run_ical.rb', line 10 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 |
Instance Method Details
#generate ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/run_ical.rb', line 23 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.sunday? ? 1 : 2 start_date = @race_date - (data.size - start_date_padding).days (start_date..@race_date).to_a.each.with_index do |date, index| activity = data[index][:activity] 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 |