forked from li-jun/KLGenerateSpamCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSwiftCodeGenerator.m
More file actions
152 lines (129 loc) · 5.76 KB
/
Copy pathSwiftCodeGenerator.m
File metadata and controls
152 lines (129 loc) · 5.76 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
//
// SwiftCodeGenerator.m
// KLGenerateSpamCode
//
// Created by Li Jun on 2024-06-25.
// Copyright © 2024 GAEA. All rights reserved.
//
#import "SwiftCodeGenerator.h"
@interface SwiftCodeGenerator ()
@property (nonatomic, strong) RandomWordGenerator *wordGenerator;
@end
@implementation SwiftCodeGenerator
- (nonnull instancetype)initWithWordGenerator:(nonnull RandomWordGenerator *)wordGenerator {
self = [super init];
if (self) {
self.wordGenerator = wordGenerator;
}
return self;
}
- (NSString *)stringTypeFunction:(NSString *)funcName {
NSMutableString *result = [NSMutableString string];
NSString *paramName = [self.wordGenerator randomWord];
[result appendFormat:@"func %@(_ %@: String) -> String {\n", funcName, paramName];
[result appendFormat:@" print(%@)\n", paramName];
NSString *varName = [self.wordGenerator randomWord];
[result appendFormat:@" let %@ = %@ + \"_\" + \"%@\"\n\n", varName, paramName, [self.wordGenerator randomWord]];
[result appendFormat:@" return %@\n", varName];
[result appendString:@"}\n\n"];
return result;
}
- (NSString *)arrayTypeFunction:(NSString *)funcName {
NSMutableString *result = [NSMutableString string];
NSString *paramName = [self.wordGenerator randomWord];
[result appendFormat:@"func %@(_ %@: String) -> [String] {\n", funcName, paramName];
[result appendFormat:@" print(%@)\n", paramName];
NSString *varName = [self.wordGenerator randomWord];
[result appendFormat:@" var %@: [String] = []\n", varName];
[result appendFormat:@" %@.append(%@)\n", varName, paramName];
for (int i = 0; i < 5; i++) {
[result appendFormat:@" %@.append(\"%@\")\n", varName, [self.wordGenerator randomWord]];
}
[result appendFormat:@" return %@\n", varName];
[result appendString:@"}\n\n"];
return result;
}
- (NSString *)dictionaryTypeFunction:(NSString *)funcName {
NSMutableString *result = [NSMutableString string];
NSString *paramName = [self.wordGenerator randomWord];
[result appendFormat:@"func %@(_ %@: String) -> [String: String] {\n", funcName, paramName];
[result appendFormat:@" print(%@)\n", paramName];
NSString *varName = [self.wordGenerator randomWord];
[result appendFormat:@" var %@: [String: String] = [:]\n", varName];
[result appendFormat:@" %@[%@] = \"%@\"\n", varName, paramName, [self.wordGenerator randomWord]];
for (int i = 0; i < 5; i++) {
[result appendFormat:@" %@[\"%@\"] = \"%@\"\n", varName, [self.wordGenerator randomWord], [self.wordGenerator randomWord]];
}
[result appendFormat:@" return %@\n", varName];
[result appendString:@"}\n\n"];
return result;
}
- (NSString *)dataTypeFunction:(NSString *)funcName {
NSMutableString *result = [NSMutableString string];
NSString *paramName = [self.wordGenerator randomWord];
[result appendFormat:@"func %@(_ %@: String) -> Data {\n", funcName, paramName];
[result appendFormat:@" print(%@)\n", paramName];
NSString *varName = [self.wordGenerator randomWord];
[result appendFormat:@" let %@ = %@.data(using: String.Encoding.utf8)!\n\n", varName, paramName];
[result appendFormat:@" return %@\n", varName];
[result appendString:@"}\n\n"];
return result;
}
- (NSString *)viewTypeFunction:(NSString *)funcName {
NSMutableString *result = [NSMutableString string];
NSString *paramName = [self.wordGenerator randomWord];
[result appendFormat:@"func %@(_ %@: String) -> UIView {\n", funcName, paramName];
[result appendFormat:@" print(%@)\n", paramName];
NSString *varName = [self.wordGenerator randomWord];
[result appendFormat:@" let %@ = UIView(frame: .zero)\n", varName];
[result appendFormat:@" %@.backgroundColor = .clear\n\n", varName];
NSString *lblVarName = [self.wordGenerator randomWord];
[result appendFormat:@" let %@ = UILabel(frame: .zero)\n", lblVarName];
[result appendFormat:@" %@.text = \"%@\"\n", lblVarName, [self.wordGenerator randomWord]];
[result appendFormat:@" %@.textColor = .black\n", lblVarName];
[result appendFormat:@" %@.addSubview(%@)\n\n", varName, lblVarName];
[result appendFormat:@" return %@\n", varName];
[result appendString:@"}\n\n"];
return result;
}
- (nonnull NSString *)generateFunction {
NSString *result = nil;
int index = arc4random_uniform(5);
NSString *word1 = [self.wordGenerator randomWord].lowercaseString;
NSString *word2 = [self.wordGenerator randomWord];
NSString *word3 = [self.wordGenerator randomWord];
NSString *funcName = [NSString stringWithFormat:@"%@%@_%@", word1, word2, word3];
switch (index) {
case 0:
result = [self stringTypeFunction:funcName];
break;
case 1:
result = [self arrayTypeFunction:funcName];
break;
case 2:
result = [self dictionaryTypeFunction:funcName];
break;
case 3:
result = [self dataTypeFunction:funcName];
break;
case 4:
result = [self viewTypeFunction:funcName];
break;
default:
result = [self stringTypeFunction:funcName];
break;
}
return result;
}
- (nonnull NSString *)generateExtension:(nonnull NSString *)className FuncNumber:(NSInteger)funcNumber {
NSMutableString *result = [NSMutableString string];
[result appendString:@"import UIKit\n\n"];
[result appendString:[NSString stringWithFormat:@"extension %@ {\n", className]];
for (int i = 0; i < funcNumber; i++) {
NSString *funcCode = [self generateFunction];
[result appendString:[NSString stringWithFormat:@"%@\n", funcCode]];
}
[result appendString:@"}"];
return result;
}
@end