Quoting cosmin at speakeasy.net, on Sat, May 06, 2006 at 11:27:07AM
-0700:> I noticed a comment in the code and was wondering if I can bump the
> priority on the ToDo list for this.
>
> I need support for RDATE when parsing recurrent events.
>
> Is there any chance on getting this in soon? Also, if you don''t
have
> the time maybe you can point me what/where I need to change to
> implement it. I''m just a newbie with Ruby, but I know a bit
more about
> iCal/iTIP as I implemented a few years ago a C++ parser for this.
Thats great. Did you implement support for timezones? Ruby has only the support
that basic posix/C apis have, which is not good.
I think RDATE support means a few things, some easy, some taking more
work.
An RDATE field itself looks like it is allowed to occur just once.
Anyhow, its value is a list of date-time, date, or period values.
decode_date_time() and others in rfc2425.rb can decode these values. Its
a fixed length list, nowhere near as complex as RRULE. I can add support
for that with a fix I''m currently trying to get out to properly return
a Date for fields whose value is DATE.
Maybe thats all you need?
The bigger problem is to take multiple RRULE enumerators, the RDATE
array of values multiple EXRULE enumerators, an EXDATE array of values,
and integrate them into a single enumerator returning all the recurrence
times... thats a lot more work.
I don''t know if I''ll have the time for the full aggregation
support,
though I''ll bump it to next on the list after bug fixes.
The aggregation algorithm below could be implemented outside of vPim
initially. If you implemented the algorithm, I''d be even happier to
take it and merge it into icalendar components! If you have implemented
the algorithm before, you might have a head start in doing it in ruby.
One thing that could help me is if you could send example calendar
components or calendars with the kinds of recurring events you need
support for, that would help a bunch.
Cheers,
Sam
RDATE ....
Description: This property can appear along with the "RRULE"
property
to define an aggregate set of repeating occurrences. When they both
appear in an iCalendar object, the recurring events are defined by
the union of occurrences defined by both the "RDATE" and
"RRULE".
The recurrence dates, if specified, are used in computing the
recurrence set. The recurrence set is the complete set of recurrence
instances for a calendar component. The recurrence set is generated
by considering the initial "DTSTART" property along with the
"RRULE",
"RDATE", "EXDATE" and "EXRULE" properties
contained within the
iCalendar object. The "DTSTART" property defines the first instance
in the recurrence set. Multiple instances of the "RRULE" and
"EXRULE"
properties can also be specified to define more sophisticated
recurrence sets. The final recurrence set is generated by gathering
all of the start date/times generated by any of the specified
"RRULE"
and "RDATE" properties, and excluding any start date/times which
fall
within the union of start date/times generated by any specified
"EXRULE" and "EXDATE" properties. This implies that start
date/times
within exclusion related properties (i.e., "EXDATE" and
"EXRULE")
take precedence over those specified by inclusion properties (i.e.,
"RDATE" and "RRULE"). Where duplicate instances are
generated by the
"RRULE" and "RDATE" properties, only one recurrence is
considered.
Duplicate instances are ignored.