123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //
- // KWMatchers.m
- // Kiwi
- //
- // Created by Luke Redpath on 17/06/2011.
- // Copyright 2011 Allen Ding. All rights reserved.
- //
- #import "KWMatchers.h"
- #import "KWUserDefinedMatcher.h"
- @interface KWMatchers() {
- NSMutableDictionary *userDefinedMatchers;
- }
- @end
- @implementation KWMatchers
- #pragma mark - Singleton implementation
- static id sharedMatchers = nil;
- + (void)initialize {
- if (self == [KWMatchers class]) {
- sharedMatchers = [[self alloc] init];
- }
- }
- + (id)matchers {
- return sharedMatchers;
- }
- - (id)init {
- self = [super init];
- if (self) {
- userDefinedMatchers = [[NSMutableDictionary alloc] init];
- }
- return self;
- }
- #pragma mark - Defining Matchers
- + (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block {
- [[self matchers] defineMatcher:selectorString as:block];
- }
- - (void)defineMatcher:(NSString *)selectorString as:(KWMatchersBuildingBlock)block {
- KWUserDefinedMatcherBuilder *builder = [KWUserDefinedMatcherBuilder builderForSelector:NSSelectorFromString(selectorString)];
- block(builder);
- userDefinedMatchers[builder.key] = builder;
- }
- - (void)addUserDefinedMatcherBuilder:(KWUserDefinedMatcherBuilder *)builder {
- userDefinedMatchers[builder.key] = builder;
- }
- #pragma mark - Building Matchers
- - (KWUserDefinedMatcher *)matcherForSelector:(SEL)selector subject:(id)subject {
- KWUserDefinedMatcherBuilder *builder = userDefinedMatchers[NSStringFromSelector(selector)];
- if (builder == nil)
- return nil;
- return [builder buildMatcherWithSubject:subject];
- }
- @end
- void KWDefineMatchers(NSString *selectorString, KWMatchersBuildingBlock block)
- {
- [KWMatchers defineMatcher:selectorString as:block];
- }
|