Subject: [ietf-calsify] Preference for multiple RDATE/EXDATE vs multiple values?

From: Rick DeNatale <[email-masked]>
Date: Tue, 5 May 2009 16:40:43 -0400

I'm about to officially release a new ruby library for icalendar
called ri_cal.  Right now it's unofficially available on github at
http://github.com/rubyredrick/ri_cal/tree/master

Before the official release I'm trying to clean up the API for
programatically creating calendars.

I'm not quite sure what to do about the API for RDATE and EXDATE.  The
spec allows these to occur multiple times, and for each occurrence to
contain one or more DATETIMEs, DATEs, or PERIODs. I was hoping that
RFC2445bis would provide some guidance here since this is a
complication of RFC2445, but it doesn't seem to.

Is there a preference one way or another for

EXDATE:20080301T120000,20080302T120000,
vs
EXDATE:20080301T120000
EXDATE:20080302T120000

FWIW this example* comes from a trouble report for the Apple ical.app
which I found by googling:
http://discussions.apple.com/thread.jspa?messageID=7315774

It looks like ical doesn't or at least didn't properly handle the
multiple values per property case.

Right now for properties which can appear multiple times in a
component, my library provides methods of the form

event.comment = "A comment"  # Makes "A comment" the only comment property
event.add_comment("another comment")  # Adds a comment property
event.add_comments("yet another comment", "still another") # adds
multiple comment properties.

in the case of exdate and rdate, I'm not sure whether I should allow
the properties to be created with multiple values (I do handle this
case on import)

Now I could allow something like

event.rdate = [val1, val2]     # make rdate a single rdate property
with two values
event.add_rdate(val1, val2)  # add a new rdate property with two values
event.add_rdates([val1, val2], [val3, val4]) # add two rdate
properties each with two different values.

But this raises a question if val1 and val2 (or val3 and val4) are
datetimes with different timezones, should they actually result in two
rdate properties or raise an error?

Is this a complication I should take on, or should I make the api work
more like the comment family and just add a separate RDATE property
for each value?

*A secondary question is how such RDATE values in the example (which
look like they should be DATE-TIMES with a floating timezone) should
be handled in enumerating occurrences?  Should it depend on whether or
not the DTSTART of the component being enumerated has a timezone or
not?

-- 
Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
_______________________________________________
ietf-calsify mailing list
[email-masked]
http://lists.osafoundation.org/mailman/listinfo/ietf-calsify