]> err.no Git - sope/blobdiff - sope-core/NGExtensions/NGCalendarDateRange.m
new aggregate Xcode with proper dependencies, removed old Xcode projects
[sope] / sope-core / NGExtensions / NGCalendarDateRange.m
index 1bb488640bbb2e231c721357f2dfe295d5457ca3..1c3e9dcfa535067f2045675f605f23ecbbb71a24 100644 (file)
     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];
 }
 
 }
 
 - (BOOL)containsDate:(NSCalendarDate *)date {
-  if([self->endDate isEqualToDate:date])
-      return NO;
   return ([self->startDate earlierDate:date] == self->startDate && 
-         [self->endDate laterDate:date] == self->endDate) ? YES : NO;
+         [self->endDate compare:date] == NSOrderedDescending) ? YES : NO;
 }
 
 /* comparison */