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"]) {