forked from appsquickly/XcodeEditor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathXcodeMemberType.m
More file actions
executable file
·132 lines (110 loc) · 5.5 KB
/
XcodeMemberType.m
File metadata and controls
executable file
·132 lines (110 loc) · 5.5 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
121
122
123
124
125
126
127
128
129
130
131
132
////////////////////////////////////////////////////////////////////////////////
//
// 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 kPBXShellScriptBuildPhase = @"PBXShellScriptBuildPhase";
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 NSString* const kXCVersionGroup = @"XCVersionGroup";
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),
kPBXShellScriptBuildPhase : @(PBXShellScriptBuildPhase),
kXCVersionGroup : @(XCVersionGroupType)
};
});
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_hasShellScriptBuildPhase {
return [self isEqualToString:kPBXShellScriptBuildPhase];
}
- (BOOL)xce_hasContainerItemProxyType {
return [self isEqualToString:kPBXContainerItemProxy];
}
- (BOOL)xce_hasResourcesBuildPhaseType {
return [self isEqualToString:kPBXResourcesBuildPhase];
}
- (BOOL)xce_hasSourcesOrFrameworksBuildPhaseType {
return [self isEqualToString:kPBXSourcesBuildPhase] || [self isEqualToString:kPBXFrameworksBuildPhase];
}
- (BOOL)xce_hasVersionedGroupType {
return [self isEqualToString:kXCVersionGroup];
}
@end