Add method to pull subclasses and compare them to the xml elements so we can handle subclasses of NSWindowController and NSViewController, or future subclasses

This commit is contained in:
Gregory John Casamento 2020-07-19 02:00:48 -04:00
parent fd14a3c591
commit 0c278cc74b

View file

@ -462,12 +462,11 @@
[objects detach];
[doc addChild: objects];
}
- (NSArray *) findSubclassesOf: (Class)clz
inDocument: (NSXMLDocument *)document
- (NSArray *) subclassesOfClass: (Class)clz
{
NSArray *result = nil;
NSMutableArray *subclasses = [GSObjCAllSubclassesOfClass(clz) mutableCopy];
NSMutableArray *result = [NSMutableArray arrayWithCapacity: [subclasses count]];
[subclasses insertObject: clz atIndex: 0];
FOR_IN(Class, cls, subclasses)
@ -477,9 +476,24 @@
NSString *xmlClassName = [NSString stringWithFormat: @"%@%@",
[[classNameNoNamespace substringToIndex: 1] lowercaseString],
[classNameNoNamespace substringFromIndex: 1]];
NSString *xpath = [NSString stringWithFormat: @"//%@",xmlClassName];
result = [document nodesForXPath: xpath error: NULL];
[result addObject: xmlClassName];
}
END_FOR_IN(subclasses);
return result;
}
- (NSArray *) findSubclassesOf: (Class)clz
inDocument: (NSXMLDocument *)document
{
NSArray *result = nil;
NSArray *xmlClassNames = [self subclassesOfClass: clz];
FOR_IN(NSString*, xmlClassName, xmlClassNames)
{
NSString *xpath = [NSString stringWithFormat: @"//%@",xmlClassName];
result = [document nodesForXPath: xpath error: NULL];
if ([result count] > 0)
{
break;