1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- //
- // FLEXSearchToken.m
- // FLEX
- //
- // Created by Tanner on 3/22/17.
- // Copyright © 2017 Tanner Bennett. All rights reserved.
- //
- #import "FLEXSearchToken.h"
- @interface FLEXSearchToken () {
- NSString *flex_description;
- }
- @end
- @implementation FLEXSearchToken
- + (instancetype)any {
- static FLEXSearchToken *any = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- any = [self string:nil options:TBWildcardOptionsAny];
- });
- return any;
- }
- + (instancetype)string:(NSString *)string options:(TBWildcardOptions)options {
- FLEXSearchToken *token = [self new];
- token->_string = string;
- token->_options = options;
- return token;
- }
- - (BOOL)isAbsolute {
- return _options == TBWildcardOptionsNone;
- }
- - (BOOL)isAny {
- return _options == TBWildcardOptionsAny;
- }
- - (BOOL)isEmpty {
- return self.isAny && self.string.length == 0;
- }
- - (NSString *)description {
- if (flex_description) {
- return flex_description;
- }
- switch (_options) {
- case TBWildcardOptionsNone:
- flex_description = _string;
- break;
- case TBWildcardOptionsAny:
- flex_description = @"*";
- break;
- default: {
- NSMutableString *desc = [NSMutableString new];
- if (_options & TBWildcardOptionsPrefix) {
- [desc appendString:@"*"];
- }
- [desc appendString:_string];
- if (_options & TBWildcardOptionsSuffix) {
- [desc appendString:@"*"];
- }
- flex_description = desc;
- }
- }
- return flex_description;
- }
- - (NSUInteger)hash {
- return self.description.hash;
- }
- - (BOOL)isEqual:(id)object {
- if ([object isKindOfClass:[FLEXSearchToken class]]) {
- FLEXSearchToken *token = object;
- return [_string isEqualToString:token->_string] && _options == token->_options;
- }
- return NO;
- }
- @end
|