Repository navigation
Expand file tree
/
Copy pathXcodeMemberType.m
More file actions
executable file
·120 lines (100 loc) · 4.54 KB
/
Copy pathXcodeMemberType.m
File metadata and controls
executable file
·120 lines (100 loc) · 4.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
////////////////////////////////////////////////////////////////////////////////
//
// JASPER BLUES
// Copyright 2012 Jasper Blues
// All Rights Reserved.
//
// NOTICE: Jasper Blues permits you to use, modify, and distribute this file
// in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////
#import "XcodeMemberType.h"
static NSString* const kPBXNilType = @"PBXNilType";
static NSString* const kPBXBuildFile = @"PBXBuildFile";
static NSString* const kPBXContainerItemProxy = @"PBXContainerItemProxy";
static NSString* const kPBXCopyFilesBuildPhase = @"PBXCopyFilesBuildPhase";
static NSString* const kPBXFileReference = @"PBXFileReference";
static NSString* const kPBXFrameworksBuildPhase = @"PBXFrameworksBuildPhase";
static NSString* const kPBXGroup = @"PBXGroup";
static NSString* const kPBXNativeTarget = @"PBXNativeTarget";
static NSString* const kPBXProject = @"PBXProject";
static NSString* const kPBXReferenceProxy = @"PBXReferenceProxy";
static NSString* const kPBXResourcesBuildPhase = @"PBXResourcesBuildPhase";
static NSString* const kPBXSourcesBuildPhase = @"PBXSourcesBuildPhase";
static NSString* const kPBXTargetDependency = @"PBXTargetDependency";
static NSString* const kPBXVariantGroup = @"PBXVariantGroup";
static NSString* const kXCBuildConfiguration = @"XCBuildConfiguration";
static NSString* const kXCConfigurationList = @"XCConfigurationList";
static NSDictionary* DictionaryWithProjectNodeTypesAsStrings() {
// This is the most vital operation on adding 500+ files
// So, we caching this dictionary
static NSDictionary* _projectNodeTypesAsStrings;
if (_projectNodeTypesAsStrings) {
return _projectNodeTypesAsStrings;
}
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_projectNodeTypesAsStrings = @{
kPBXNilType : @(PBXNilType),
kPBXBuildFile : @(PBXBuildFileType),
kPBXContainerItemProxy : @(PBXContainerItemProxyType),
kPBXCopyFilesBuildPhase : @(PBXCopyFilesBuildPhaseType),
kPBXFileReference : @(PBXFileReferenceType),
kPBXFrameworksBuildPhase : @(PBXFrameworksBuildPhaseType),
kPBXGroup : @(PBXGroupType),
kPBXNativeTarget : @(PBXNativeTargetType),
kPBXProject : @(PBXProjectType),
kPBXReferenceProxy : @(PBXReferenceProxyType),
kPBXResourcesBuildPhase : @(PBXResourcesBuildPhaseType),
kPBXSourcesBuildPhase : @(PBXSourcesBuildPhaseType),
kPBXTargetDependency : @(PBXTargetDependencyType),
kPBXVariantGroup : @(PBXVariantGroupType),
kXCBuildConfiguration : @(XCBuildConfigurationType),
kXCConfigurationList : @(XCConfigurationListType),
};
});
return _projectNodeTypesAsStrings;
}
@implementation NSString (XcodeMemberTypeExtensions)
+ (NSString*)xce_stringFromMemberType:(XcodeMemberType)nodeType {
NSDictionary* nodeTypesToString = DictionaryWithProjectNodeTypesAsStrings();
return [[nodeTypesToString allKeysForObject:@(nodeType)] firstObject];
}
- (XcodeMemberType)xce_asMemberType {
NSDictionary* nodeTypesToString = DictionaryWithProjectNodeTypesAsStrings();
return (XcodeMemberType) [[nodeTypesToString objectForKey:self] intValue];
}
- (BOOL)xce_hasFileReferenceType {
return [self isEqualToString:kPBXFileReference];
}
- (BOOL)xce_hasFileReferenceOrReferenceProxyType {
return [self isEqualToString:kPBXFileReference] || [self isEqualToString:kPBXReferenceProxy];
}
- (BOOL)xce_hasReferenceProxyType {
return [self isEqualToString:kPBXReferenceProxy];
}
- (BOOL)xce_hasGroupType {
return [self isEqualToString:kPBXGroup] || [self isEqualToString:kPBXVariantGroup];
}
- (BOOL)xce_hasProjectType {
return [self isEqualToString:kPBXProject];
}
- (BOOL)xce_hasNativeTargetType {
return [self isEqualToString:kPBXNativeTarget];
}
- (BOOL)xce_hasBuildFileType {
return [self isEqualToString:kPBXBuildFile];
}
- (BOOL)xce_hasBuildConfigurationType {
return [self isEqualToString:kXCBuildConfiguration];
}
- (BOOL)xce_hasContainerItemProxyType {
return [self isEqualToString:kPBXContainerItemProxy];
}
- (BOOL)xce_hasResourcesBuildPhaseType {
return [self isEqualToString:kPBXResourcesBuildPhase];
}
- (BOOL)xce_hasSourcesOrFrameworksBuildPhaseType {
return [self isEqualToString:kPBXSourcesBuildPhase] || [self isEqualToString:kPBXFrameworksBuildPhase];
}
@end