def initialize(dtstart, rrule = nil)
@dtstart = dtstart.getlocal
@rrule = rrule
@freq = nil
@until = nil
@count = nil
@interval = 1
@wkst = 'MO'
@by = {}
if @rrule
@rrule.scan(/([^;=]+)=([^;=]+)/) do |key,value|
key.upcase!
value.upcase!
case key
when 'FREQ'
@freq = value
when 'UNTIL'
if @count
raise "found UNTIL, but COUNT already specified"
end
@until = Rrule.time_from_rfc2425(value)
when 'COUNT'
if @until
raise "found COUNT, but UNTIL already specified"
end
@count = value.to_i
when 'INTERVAL'
@interval = value.to_i
if @interval < 1
raise "interval must be a positive integer"
end
when 'WKST'
@wkst = value
else
@by[key] = value
end
end
if !@freq
raise ArgumentError, "recurrence rule lacks a frequency"
end
end
end