Sha256: c8bdc7f9a0cde773ba36e9d1045ef2d76cf4491281f4ae6c34deeb6f183290ce
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
module RiCal class PropertyValue class RecurrenceRule < PropertyValue class NegativeSetposEnumerator < Enumerator # :nodoc: def initialize(recurrence_rule, component, setpos_list) super @current_set = [] @valids = [] end def next_occurrence while true result = advance if result >= start_time @count += 1 return recurrence_rule.exhausted?(@count, result) ? nil : result_occurrence_period(result) end end end def advance if @valids.empty? fill_set @valids = @setpos_list.map {|sp| sp < 0 ? @current_set.length + sp : sp - 1} current_time_index = @current_set.index(@start_time) if current_time_index @valids << current_time_index end @valids = @valids.uniq.sort end @current_set[@valids.shift] end def fill_set @current_set = [next_time] while true self.next_time = @incrementer.next_time(next_time) if recurrence_rule.in_same_set?(@current_set.last, next_time) @current_set << next_time else return end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
friflaj_ri_cal-0.9.0 | lib/ri_cal/property_value/recurrence_rule/negative_setpos_enumerator.rb |