mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-08-24 19:38:55 -04:00
76 lines
1.7 KiB
Objective-C
76 lines
1.7 KiB
Objective-C
//
|
|
// 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
|