12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //
- // KWRegularExpressionPatternMatcher.m
- // Kiwi
- //
- // Created by Kristopher Johnson on 4/11/13.
- // Copyright (c) 2013 Allen Ding. All rights reserved.
- //
- #import "KWRegularExpressionPatternMatcher.h"
- #import "KWFormatter.h"
- @interface KWRegularExpressionPatternMatcher ()
- @property (nonatomic, copy) NSString *pattern;
- @property (nonatomic) NSRegularExpressionOptions options;
- @end
- @implementation KWRegularExpressionPatternMatcher
- #pragma mark - Getting Matcher Strings
- + (NSArray *)matcherStrings {
- return @[@"matchPattern:", @"matchPattern:options:"];
- }
- #pragma mark - Matching
- - (BOOL)evaluate {
- if (![self.subject isKindOfClass:[NSString class]]) {
- return NO;
- }
- NSString *subjectString = (NSString *)self.subject;
- NSRange subjectStringRange = NSMakeRange(0, subjectString.length);
-
- NSError *error = nil;
- NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:self.pattern
- options:self.options
- error:&error];
- if (!regex) {
- NSLog(@"%s: Unable to create regular expression for pattern \"%@\": %@",
- __PRETTY_FUNCTION__, self.pattern, [error localizedDescription]);
- return NO;
- }
-
- NSUInteger numberOfMatches = [regex numberOfMatchesInString:subjectString
- options:0
- range:subjectStringRange];
- return (numberOfMatches == 1);
- }
- #pragma mark - Getting Failure Messages
- - (NSString *)failureMessageForShould {
- return [NSString stringWithFormat:@"%@ did not match pattern \"%@\"",
- [KWFormatter formatObject:self.subject],
- self.pattern];
- }
- - (NSString *)failureMessageForShouldNot {
- return [NSString stringWithFormat:@"expected subject not to match pattern \"%@\"",
- self.pattern];
- }
- - (NSString *)description {
- return [NSString stringWithFormat:@"match pattern \"%@\"", self.pattern];
- }
- - (void)matchPattern:(NSString *)pattern {
- self.pattern = pattern;
- self.options = 0;
- }
- - (void)matchPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options {
- self.pattern = pattern;
- self.options = options;
- }
- @end
|