mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 20:34:03 -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
 | 
