module Icalendar::Timezone::TzProperties
Public Class Methods
included(base)
click to toggle source
# File lib/icalendar/timezone.rb, line 9 def self.included(base) base.class_eval do required_property :dtstart, Icalendar::Values::DateTime required_property :tzoffsetfrom, Icalendar::Values::UtcOffset required_property :tzoffsetto, Icalendar::Values::UtcOffset optional_property :rrule, Icalendar::Values::Recur, true optional_property :comment optional_property :rdate, Icalendar::Values::DateTime optional_property :tzname transient_variable :@cached_occurrences transient_variable :@occurrences end end
Public Instance Methods
occurrences()
click to toggle source
# File lib/icalendar/timezone.rb, line 25 def occurrences @occurrences ||= IceCube::Schedule.new(dtstart.to_time) do |s| rrule.each do |rule| s.add_recurrence_rule IceCube::Rule.from_ical(rule.value_ical) end rdate.each do |date| s.add_recurrence_time date.to_time end end.all_occurrences_enumerator end
previous_occurrence(from)
click to toggle source
# File lib/icalendar/timezone.rb, line 36 def previous_occurrence(from) from = IceCube::TimeUtil.match_zone(from, dtstart.to_time) @cached_occurrences ||= [] while @cached_occurrences.empty? || @cached_occurrences.last <= from begin @cached_occurrences << occurrences.next rescue StopIteration break end end @cached_occurrences.reverse_each.find { |occurrence| occurrence < from } end