diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index fb4d15e83..3c45fc14d 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,8 @@ +2010-04-09 Wolfgang Sourdeau + + * iCalEvent.m (-propertyValue:): new method that accept a + key-based method invocation. + 2010-03-22 Wolfgang Sourdeau * iCalTimeZonePeriod.m (_occurenceForDate:byRRule:): fixed diff --git a/SOPE/NGCards/iCalEvent.h b/SOPE/NGCards/iCalEvent.h index 576b5f79d..0dabe1806 100644 --- a/SOPE/NGCards/iCalEvent.h +++ b/SOPE/NGCards/iCalEvent.h @@ -72,6 +72,8 @@ - (iCalEventChanges *) getChangesRelativeToEvent: (iCalEvent *) _event; +- (id) propertyValue: (NSString *) property; + @end #endif /* __NGCards_iCalEvent_H__ */ diff --git a/SOPE/NGCards/iCalEvent.m b/SOPE/NGCards/iCalEvent.m index 050f9d9d6..3bbde5c50 100644 --- a/SOPE/NGCards/iCalEvent.m +++ b/SOPE/NGCards/iCalEvent.m @@ -19,6 +19,8 @@ 02111-1307, USA. */ +#import + #import #import @@ -262,4 +264,26 @@ toEvent: self]; } +- (id) propertyValue: (NSString *) property +{ + static NSDictionary *propertyMethods = nil; + NSString *method; + + if (!propertyMethods) + { + propertyMethods = [NSDictionary dictionaryWithObjectsAndKeys: + @"durationAsTimeInterval", @"duration", + @"recurrenceRules", @"rrule", + @"exceptionRules", @"exrule", + @"exceptionDates", @"exdate", + nil]; + [propertyMethods retain]; + } + method = [propertyMethods objectForKey: property]; + if (!method) + method = property; + + return [self performSelector: NSSelectorFromString (method)]; +} + @end /* iCalEvent */