X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=sope-core%2FNGExtensions%2FNGCalendarDateRange.m;h=1c3e9dcfa535067f2045675f605f23ecbbb71a24;hb=38564472ea5a1b843ca40cefe87bf3c499532855;hp=74e5ce7ee245d4794c9d4dd1fe03b87048c2cec3;hpb=7eadc020be39163d31271943ebe303a97725794e;p=sope diff --git a/sope-core/NGExtensions/NGCalendarDateRange.m b/sope-core/NGExtensions/NGCalendarDateRange.m index 74e5ce7e..1c3e9dcf 100644 --- a/sope-core/NGExtensions/NGCalendarDateRange.m +++ b/sope-core/NGExtensions/NGCalendarDateRange.m @@ -81,11 +81,20 @@ c = self->startDate; d = self->endDate; } + // [a;b[ ?< [c;d[ if ([b compare:c] == NSOrderedAscending) return nil; // no intersection - if ([b compare:d] == NSOrderedAscending) - return [NGCalendarDateRange calendarDateRangeWithStartDate:c endDate:b]; - + // b ?< d + if ([b compare:d] == NSOrderedAscending) { + // c !< b && b !< d -> [c;b[ + if([c compare:b] == NSOrderedSame) + return nil; // no real range, thus return nil! + else + return [NGCalendarDateRange calendarDateRangeWithStartDate:c endDate:b]; + } + if([c compare:d] == NSOrderedSame) + return nil; // no real range, thus return nil! + // b !> d -> [c;d[ return [NGCalendarDateRange calendarDateRangeWithStartDate:c endDate:d]; } @@ -118,7 +127,7 @@ - (BOOL)containsDate:(NSCalendarDate *)date { return ([self->startDate earlierDate:date] == self->startDate && - [self->endDate laterDate:date] == self->endDate) ? YES : NO; + [self->endDate compare:date] == NSOrderedDescending) ? YES : NO; } /* comparison */