12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- //
- // FLEXRuntimeKeyPath.m
- // FLEX
- //
- // Created by Tanner on 3/22/17.
- // Copyright © 2017 Tanner Bennett. All rights reserved.
- //
- #import "FLEXRuntimeKeyPath.h"
- #import "FLEXRuntimeClient.h"
- @interface FLEXRuntimeKeyPath () {
- NSString *flex_description;
- }
- @end
- @implementation FLEXRuntimeKeyPath
- + (instancetype)empty {
- static FLEXRuntimeKeyPath *empty = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- FLEXSearchToken *any = FLEXSearchToken.any;
- empty = [self new];
- empty->_bundleKey = any;
- empty->flex_description = @"";
- });
- return empty;
- }
- + (instancetype)bundle:(FLEXSearchToken *)bundle
- class:(FLEXSearchToken *)cls
- method:(FLEXSearchToken *)method
- isInstance:(NSNumber *)instance
- string:(NSString *)keyPathString {
- FLEXRuntimeKeyPath *keyPath = [self new];
- keyPath->_bundleKey = bundle;
- keyPath->_classKey = cls;
- keyPath->_methodKey = method;
- keyPath->_instanceMethods = instance;
- // Remove irrelevant trailing '*' for equality purposes
- if ([keyPathString hasSuffix:@"*"]) {
- keyPathString = [keyPathString substringToIndex:keyPathString.length];
- }
- keyPath->flex_description = keyPathString;
-
- if (bundle.isAny && cls.isAny && method.isAny) {
- [FLEXRuntimeClient initializeWebKitLegacy];
- }
- return keyPath;
- }
- - (NSString *)description {
- return flex_description;
- }
- - (NSUInteger)hash {
- return flex_description.hash;
- }
- - (BOOL)isEqual:(id)object {
- if ([object isKindOfClass:[FLEXRuntimeKeyPath class]]) {
- FLEXRuntimeKeyPath *kp = object;
- return [flex_description isEqualToString:kp->flex_description];
- }
- return NO;
- }
- @end
|