I use RiCal.parse(file) to parse Calendar from .ics file, which is export from iCal. There is an recurrence event and an exception of it.
BEGIN:VEVENT
CREATED:20120706T024837Z
UID:BE7FC7DD-81C3-49AE-A4FB-777CB8132D91
DTEND;TZID=Asia/Ho_Chi_Minh:20120710T110000
EXDATE;TZID=Asia/Ho_Chi_Minh:20120726T100000
EXDATE;TZID=Asia/Ho_Chi_Minh:20120721T100000
RRULE:FREQ=DAILY;INTERVAL=1
TRANSP:OPAQUE
SUMMARY:re
DTSTART;TZID=Asia/Ho_Chi_Minh:20120710T100000
DTSTAMP:20120706T041951Z
SEQUENCE:3
END:VEVENT
BEGIN:VEVENT
CREATED:20120706T024837Z
UID:BE7FC7DD-81C3-49AE-A4FB-777CB8132D91
DTEND;TZID=Asia/Ho_Chi_Minh:20120719T110000
TRANSP:OPAQUE
SUMMARY:re ex
DTSTART;TZID=Asia/Ho_Chi_Minh:20120719T100000
DTSTAMP:20120706T024905Z
SEQUENCE:4
RECURRENCE-ID;TZID=Asia/Ho_Chi_Minh:20120719T100000
END:VEVENT
how to get exception when we had recurrence exception. Ex: event.exceptions ...