From 6a594d4c605680026022c163a83c815fbbd4bde7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=AD=94=E4=BA=AE?= Date: Fri, 10 Jan 2020 15:45:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=93=E5=BC=80?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E6=96=87=E4=BB=B6=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KLGenerateSpamCode/main.m | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/KLGenerateSpamCode/main.m b/KLGenerateSpamCode/main.m index a0f6b28..a32767a 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]; From 27aad6f5c1f2e2e82fb763f3816657a7265bfd83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=AD=94=E4=BA=AE?= Date: Fri, 10 Jan 2020 20:50:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?.mm=E7=B1=BB=E5=9E=8B=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcschemes/KLGenerateSpamCode.xcscheme | 108 ++++++++++++++++++ KLGenerateSpamCode/main.m | 35 ++++-- 2 files changed, 134 insertions(+), 9 deletions(-) create mode 100644 KLGenerateSpamCode.xcodeproj/xcshareddata/xcschemes/KLGenerateSpamCode.xcscheme 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 a32767a..42f1f8b 100644 --- a/KLGenerateSpamCode/main.m +++ b/KLGenerateSpamCode/main.m @@ -699,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, @"^//.*", @""); @@ -859,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]; @@ -888,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]) { @@ -901,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]) { @@ -932,7 +949,7 @@ void modifyClassNamePrefix(NSMutableString *projectContent, NSString *sourceCode @autoreleasepool { modifyFilesClassName(gSourceCodeDir, fileName, newClassName); } - } else { + } else { continue; } } else if ([fileExtension isEqualToString:@"swift"]) {