diff --git a/KLGenerateSpamCode.xcodeproj/xcshareddata/xcschemes/KLGenerateSpamCode.xcscheme b/KLGenerateSpamCode.xcodeproj/xcshareddata/xcschemes/KLGenerateSpamCode.xcscheme
new file mode 100644
index 0000000..5d95711
--- /dev/null
+++ b/KLGenerateSpamCode.xcodeproj/xcshareddata/xcschemes/KLGenerateSpamCode.xcscheme
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/KLGenerateSpamCode/main.m b/KLGenerateSpamCode/main.m
index a0f6b28..42f1f8b 100644
--- a/KLGenerateSpamCode/main.m
+++ b/KLGenerateSpamCode/main.m
@@ -279,13 +279,7 @@ int main(int argc, const char * argv[]) {
}
printf("删除注释和空行完成\n");
}
- if (oldProjectName && newProjectName) {
- @autoreleasepool {
- NSString *dir = gSourceCodeDir.stringByDeletingLastPathComponent;
- modifyProjectName(dir, oldProjectName, newProjectName);
- }
- printf("修改工程名完成\n");
- }
+
if (oldClassNamePrefix && newClassNamePrefix) {
printf("开始修改类名前缀...\n");
@autoreleasepool {
@@ -303,6 +297,14 @@ int main(int argc, const char * argv[]) {
}
printf("修改类名前缀完成\n");
}
+
+ if (oldProjectName && newProjectName) {
+ @autoreleasepool {
+ NSString *dir = gSourceCodeDir.stringByDeletingLastPathComponent;
+ modifyProjectName(dir, oldProjectName, newProjectName);
+ }
+ printf("修改工程名完成\n");
+ }
if (outDirString) {
NSMutableString *categoryCallImportString = [NSMutableString string];
NSMutableString *categoryCallFuncString = [NSMutableString string];
@@ -442,7 +444,7 @@ void generateSpamCodeFile(NSString *outDirectory, NSString *mFilePath, GSCSource
return;
}
}
-
+
// 查找方法
NSString *implementation = [mFileContent substringWithRange:impResult.range];
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"^ *([-+])[^)]+\\)([^;{]+)" options:NSRegularExpressionAnchorsMatchLines|NSRegularExpressionUseUnicodeWordBoundaries error:nil];
@@ -561,9 +563,9 @@ void generateSpamCodeFile(NSString *outDirectory, NSString *mFilePath, GSCSource
extension %@ {\n%@\
}\n";
static NSString *const kSwiftMethodTemplate = @"\
- func %@%@(_ %@: String%@) {\n\
- print(%@)\n\
- }\n";
+func %@%@(_ %@: String%@) {\n\
+print(%@)\n\
+}\n";
void generateSwiftSpamCodeFile(NSString *outDirectory, NSString *swiftFilePath) {
NSString *swiftFileContent = [NSString stringWithContentsOfFile:swiftFilePath encoding:NSUTF8StringEncoding error:nil];
@@ -697,7 +699,7 @@ void deleteComments(NSString *directory, NSArray *ignoreDirNames) {
deleteComments(filePath, ignoreDirNames);
continue;
}
- if (![fileName hasSuffix:@".h"] && ![fileName hasSuffix:@".m"] && ![fileName hasSuffix:@".mm"] && ![fileName hasSuffix:@".swift"]) continue;
+ if (![fileName hasSuffix:@".h"] && ![fileName hasSuffix:@".m"] && ![fileName hasSuffix:@".mm"] && ![fileName hasSuffix:@".mm"] && ![fileName hasSuffix:@".swift"]) continue;
NSMutableString *fileContent = [NSMutableString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
regularReplacement(fileContent, @"([^:/])//.*", @"\\1");
regularReplacement(fileContent, @"^//.*", @"");
@@ -857,7 +859,7 @@ void modifyFilesClassName(NSString *sourceCodeDir, NSString *oldClassName, NSStr
}
NSString *fileName = filePath.lastPathComponent;
- if ([fileName hasSuffix:@".h"] || [fileName hasSuffix:@".m"] || [fileName hasSuffix:@".pch"] || [fileName hasSuffix:@".swift"] || [fileName hasSuffix:@".xib"] || [fileName hasSuffix:@".storyboard"]) {
+ if ([fileName hasSuffix:@".h"] || [fileName hasSuffix:@".m"] || [fileName hasSuffix:@".mm"] || [fileName hasSuffix:@".pch"] || [fileName hasSuffix:@".swift"] || [fileName hasSuffix:@".xib"] || [fileName hasSuffix:@".storyboard"]) {
NSError *error = nil;
NSMutableString *fileContent = [NSMutableString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
@@ -886,6 +888,8 @@ void modifyClassNamePrefix(NSMutableString *projectContent, NSString *sourceCode
NSArray *files = [fm contentsOfDirectoryAtPath:sourceCodeDir error:nil];
BOOL isDirectory;
for (NSString *filePath in files) {
+
+
NSString *path = [sourceCodeDir stringByAppendingPathComponent:filePath];
if ([fm fileExistsAtPath:path isDirectory:&isDirectory] && isDirectory) {
if (![ignoreDirNames containsObject:filePath]) {
@@ -899,27 +903,42 @@ void modifyClassNamePrefix(NSMutableString *projectContent, NSString *sourceCode
NSString *newClassName;
if ([fileName hasPrefix:oldName]) {
newClassName = [newName stringByAppendingString:[fileName substringFromIndex:oldName.length]];
- } else {
- //处理是category的情况。当是category时,修改+号后面的类名前缀
+ }else if([fileName containsString:@"+"]){
+ // category类型
NSString *oldNamePlus = [NSString stringWithFormat:@"+%@",oldName];
if ([fileName containsString:oldNamePlus]) {
NSMutableString *fileNameStr = [[NSMutableString alloc] initWithString:fileName];
[fileNameStr replaceCharactersInRange:[fileName rangeOfString:oldNamePlus] withString:[NSString stringWithFormat:@"+%@",newName]];
newClassName = fileNameStr;
}else{
- newClassName = [newName stringByAppendingString:fileName];
+
+ newClassName = fileName;
+
}
+
+ }else {
+ newClassName = fileName;
+
}
// 文件名 Const.ext > DDConst.ext
if ([fileExtension isEqualToString:@"h"]) {
NSString *mFileName = [fileName stringByAppendingPathExtension:@"m"];
- if ([files containsObject:mFileName]) {
+ NSString *mmFileName = [fileName stringByAppendingPathExtension:@"mm"];
+
+ if ([files containsObject:mFileName] || [files containsObject:mmFileName]) {
NSString *oldFilePath = [[sourceCodeDir stringByAppendingPathComponent:fileName] stringByAppendingPathExtension:@"h"];
NSString *newFilePath = [[sourceCodeDir stringByAppendingPathComponent:newClassName] stringByAppendingPathExtension:@"h"];
renameFile(oldFilePath, newFilePath);
- oldFilePath = [[sourceCodeDir stringByAppendingPathComponent:fileName] stringByAppendingPathExtension:@"m"];
- newFilePath = [[sourceCodeDir stringByAppendingPathComponent:newClassName] stringByAppendingPathExtension:@"m"];
+ if ([files containsObject:mFileName]) {
+ oldFilePath = [[sourceCodeDir stringByAppendingPathComponent:fileName] stringByAppendingPathExtension:@"m"];
+ newFilePath = [[sourceCodeDir stringByAppendingPathComponent:newClassName] stringByAppendingPathExtension:@"m"];
+ }else{
+ oldFilePath = [[sourceCodeDir stringByAppendingPathComponent:fileName] stringByAppendingPathExtension:@"mm"];
+ newFilePath = [[sourceCodeDir stringByAppendingPathComponent:newClassName] stringByAppendingPathExtension:@"mm"];
+
+ }
+
renameFile(oldFilePath, newFilePath);
oldFilePath = [[sourceCodeDir stringByAppendingPathComponent:fileName] stringByAppendingPathExtension:@"xib"];
if ([fm fileExistsAtPath:oldFilePath]) {
@@ -930,7 +949,7 @@ void modifyClassNamePrefix(NSMutableString *projectContent, NSString *sourceCode
@autoreleasepool {
modifyFilesClassName(gSourceCodeDir, fileName, newClassName);
}
- } else {
+ } else {
continue;
}
} else if ([fileExtension isEqualToString:@"swift"]) {