Files
main/Tweaks/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXClassShortcuts.m
2023-06-27 09:54:41 +02:00

74 lines
2.6 KiB
Objective-C

//
// FLEXClassShortcuts.m
// FLEX
//
// Created by Tanner Bennett on 11/22/19.
// Copyright © 2020 FLEX Team. All rights reserved.
//
#import "FLEXClassShortcuts.h"
#import "FLEXShortcut.h"
#import "FLEXObjectExplorerFactory.h"
#import "FLEXObjectListViewController.h"
#import "NSObject+FLEX_Reflection.h"
@interface FLEXClassShortcuts ()
@property (nonatomic, readonly) Class cls;
@end
@implementation FLEXClassShortcuts
+ (instancetype)forObject:(Class)cls {
// These additional rows will appear at the beginning of the shortcuts section.
// The methods below are written in such a way that they will not interfere
// with properties/etc being registered alongside these
return [self forObject:cls additionalRows:@[
[FLEXActionShortcut title:@"Find Live Instances" subtitle:nil
viewer:^UIViewController *(id obj) {
return [FLEXObjectListViewController
instancesOfClassWithName:NSStringFromClass(obj)
retained:NO
];
}
accessoryType:^UITableViewCellAccessoryType(id obj) {
return UITableViewCellAccessoryDisclosureIndicator;
}
],
[FLEXActionShortcut title:@"List Subclasses" subtitle:nil
viewer:^UIViewController *(id obj) {
NSString *name = NSStringFromClass(obj);
return [FLEXObjectListViewController subclassesOfClassWithName:name];
}
accessoryType:^UITableViewCellAccessoryType(id view) {
return UITableViewCellAccessoryDisclosureIndicator;
}
],
[FLEXActionShortcut title:@"Explore Bundle for Class"
subtitle:^NSString *(id obj) {
return [self shortNameForBundlePath:[NSBundle bundleForClass:obj].executablePath];
}
viewer:^UIViewController *(id obj) {
NSBundle *bundle = [NSBundle bundleForClass:obj];
return [FLEXObjectExplorerFactory explorerViewControllerForObject:bundle];
}
accessoryType:^UITableViewCellAccessoryType(id view) {
return UITableViewCellAccessoryDisclosureIndicator;
}
],
]];
}
+ (NSString *)shortNameForBundlePath:(NSString *)imageName {
NSArray<NSString *> *components = [imageName componentsSeparatedByString:@"/"];
if (components.count >= 2) {
return [NSString stringWithFormat:@"%@/%@",
components[components.count - 2],
components[components.count - 1]
];
}
return imageName.lastPathComponent;
}
@end