Allow simple predicates on NSDate.

This commit is contained in:
fredkiefer 2020-01-20 21:25:17 +01:00
parent 4549f56bc6
commit 4d7da7ee80
2 changed files with 24 additions and 8 deletions

View file

@ -1,3 +1,7 @@
2020-01-20 Fred Kiefer <fredkiefer@gmx.de>
* Source/NSPredicate.m: Allow simple predicates on NSDate.
2020-01-20 Richard Frith-Macdonald <rfm@gnu.org>
* Source/GSTLS.m: remove certificate key password from hash key of

View file

@ -891,6 +891,18 @@ GSICUStringMatchesRegex(NSString *string, NSString *regex, NSStringCompareOption
}
#endif
- (double) doubleValueFor: (id)value
{
if ([value isKindOfClass: [NSDate class]])
{
return [(NSDate*)value timeIntervalSinceReferenceDate];
}
else
{
return [value doubleValue];
}
}
- (BOOL) _evaluateLeftValue: (id)leftResult
rightValue: (id)rightResult
object: (id)object
@ -942,26 +954,26 @@ GSICUStringMatchesRegex(NSString *string, NSString *regex, NSStringCompareOption
{
case NSLessThanPredicateOperatorType:
{
double ld = [leftResult doubleValue];
double rd = [rightResult doubleValue];
double ld = [self doubleValueFor: leftResult];
double rd = [self doubleValueFor: rightResult];
return (ld < rd) ? YES : NO;
}
case NSLessThanOrEqualToPredicateOperatorType:
{
double ld = [leftResult doubleValue];
double rd = [rightResult doubleValue];
double ld = [self doubleValueFor: leftResult];
double rd = [self doubleValueFor: rightResult];
return (ld <= rd) ? YES : NO;
}
case NSGreaterThanPredicateOperatorType:
{
double ld = [leftResult doubleValue];
double rd = [rightResult doubleValue];
double ld = [self doubleValueFor: leftResult];
double rd = [self doubleValueFor: rightResult];
return (ld > rd) ? YES : NO;
}
case NSGreaterThanOrEqualToPredicateOperatorType:
{
double ld = [leftResult doubleValue];
double rd = [rightResult doubleValue];
double ld = [self doubleValueFor: leftResult];
double rd = [self doubleValueFor: rightResult];
return (ld >= rd) ? YES : NO;
}
case NSEqualToPredicateOperatorType: