main
1//
2// NSObject+KiwiAdditions.m
3// Kiwi
4//
5// Created by Luke Redpath on 24/01/2011.
6// Copyright 2011 Allen Ding. All rights reserved.
7//
8
9#import "KWGenericMatchingAdditions.h"
10#import "KWGenericMatcher.h"
11#import "KWGenericMatchEvaluator.h"
12
13@implementation NSObject (KiwiGenericMatchingAdditions)
14
15- (BOOL)isEqualOrMatches:(id)object
16{
17 if ([KWGenericMatchEvaluator isGenericMatcher:self]) {
18 return [KWGenericMatchEvaluator genericMatcher:self matches:object];
19 }
20 return [self isEqual:object];
21}
22
23@end
24
25@implementation NSArray (KiwiGenericMatchingAdditions)
26
27- (BOOL)containsObjectEqualToOrMatching:(id)object
28{
29 if ([KWGenericMatchEvaluator isGenericMatcher:object]) {
30 return [self containsObjectMatching:object];
31 }
32 return [self containsObject:object];
33}
34
35- (BOOL)containsObjectMatching:(id)matcher
36{
37 NSIndexSet *indexSet = [self indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
38 BOOL matches = [KWGenericMatchEvaluator genericMatcher:matcher matches:obj];
39 if (matches) {
40 *stop = YES;
41 }
42 return matches;
43 }];
44
45 return (indexSet.count > 0);
46}
47
48@end
49
50@implementation NSSet (KiwiGenericMatchingAdditions)
51
52- (BOOL)containsObjectEqualToOrMatching:(id)object
53{
54 if ([KWGenericMatchEvaluator isGenericMatcher:object]) {
55 return [[self allObjects] containsObjectMatching:object];
56 }
57 return [self containsObject:object];
58}
59
60@end
61
62@implementation NSOrderedSet (KiwiGenericMatchingAdditions)
63
64- (BOOL)containsObjectEqualToOrMatching:(id)object
65{
66 if ([KWGenericMatchEvaluator isGenericMatcher:object]) {
67 return [[self array] containsObjectMatching:object];
68 }
69 return [self containsObject:object];
70}
71
72@end