class MoreHoliday::Importers::ICal
Attributes
content[R]
serialized[R]
year[R]
Public Class Methods
new(content, year: Date.today.year)
click to toggle source
# File lib/more_holiday/importers/i_cal.rb, line 8 def initialize content, year: Date.today.year @content = content @year = year end
Public Instance Methods
serialize()
click to toggle source
# File lib/more_holiday/importers/i_cal.rb, line 13 def serialize extract_events remove_out_of_scope_events @serialized.sort! end
Private Instance Methods
add_event(date, summary)
click to toggle source
# File lib/more_holiday/importers/i_cal.rb, line 33 def add_event date, summary @serialized = Array.new unless @serialized.is_a?(Array) @serialized << [date.to_s, summary.to_s] end
complete_frequent(event)
click to toggle source
# File lib/more_holiday/importers/i_cal.rb, line 38 def complete_frequent event rules = event.rrule.first case rules.frequency when "YEARLY" event_year, month, day = event.dtstart.year, event.dtstart.month, event.dtstart.day if rules.interval.is_a?(Integer) while event_year <= year or event_year <= event.dtstamp.year add_event(Date.parse("#{event_year}-#{month}-#{day}"), event.summary) event_year += rules.interval end end end end
extract_events()
click to toggle source
# File lib/more_holiday/importers/i_cal.rb, line 21 def extract_events Icalendar::Calendar.parse(content).map do |calendar| calendar.events.map do |event| if !event.rrule.first.nil? complete_frequent(event) else add_event(event.dtstart, event.summary) end end end end
remove_out_of_scope_events()
click to toggle source
# File lib/more_holiday/importers/i_cal.rb, line 54 def remove_out_of_scope_events @serialized.reject! { |event| Date.parse(event.first).year != year } end