Skip to content

Commit 28f434e

Browse files
authored
Merge pull request #19 from readdle/feature/align-generated-code
Codestyle ☝️
2 parents 644c765 + cf9705e commit 28f434e

15 files changed

+232
-57
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ buildscript {
66
}
77

88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.1.3'
10-
classpath 'com.readdle.android.swift:swift-android-gradle:1.1.2'
9+
classpath 'com.android.tools.build:gradle:3.1.4'
10+
classpath 'com.readdle.android.swift:gradle:1.1.7'
1111
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
1212
}
1313
}

compiler/src/main/java/com/readdle/codegen/SwiftBlockDescriptor.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ File generateCode() throws IOException {
110110
swiftWriter.emitImports(importPackages);
111111
swiftWriter.emitEmptyLine();
112112

113-
swiftWriter.emitStatement(String.format("fileprivate let javaClass = JNI.GlobalFindClass(\"%s\")!", javaFullName));
114-
113+
swiftWriter.emitStatement(String.format("private let javaClass = JNI.GlobalFindClass(\"%s\")!", javaFullName));
114+
swiftWriter.emitEmptyLine();
115115
swiftWriter.emitStatement(String.format("public typealias %s = %s", simpleTypeName, blockSignature));
116116

117117
swiftWriter.emitEmptyLine();
@@ -145,7 +145,7 @@ File generateCode() throws IOException {
145145
swiftWriter.emitStatement("}");
146146

147147
swiftWriter.emitEmptyLine();
148-
swiftWriter.emitStatement(String.format("static let javaMethod%1$s = try! JNI.getJavaMethod(forClass:\"%2$s\", method: \"%1$s\", sig: \"%3$s\")",
148+
swiftWriter.emitStatement(String.format("static let javaMethod%1$s = try! JNI.getJavaMethod(forClass: \"%2$s\", method: \"%1$s\", sig: \"%3$s\")",
149149
funcName,
150150
javaFullName,
151151
sig));
@@ -164,7 +164,8 @@ File generateCode() throws IOException {
164164
if (param.isOptional) {
165165
swiftWriter.emitStatement(String.format("if let %s = $%s {", param.name, i + ""));
166166
swiftWriter.emitStatement(String.format("java_%s = try %s.javaObject()", param.name, param.name));
167-
swiftWriter.emitStatement("} else {");
167+
swiftWriter.emitStatement("}");
168+
swiftWriter.emitStatement("else {");
168169
swiftWriter.emitStatement(String.format("java_%s = jnull()", param.name));
169170
swiftWriter.emitStatement("}");
170171
} else {
@@ -195,11 +196,13 @@ File generateCode() throws IOException {
195196
swiftWriter.emit(String.format(jniMethodTemplate, swiftType, funcName));
196197

197198
for (SwiftParamDescriptor param : params) {
198-
swiftWriter.emitStatement(String.format(", java_%s", param.name));
199+
swiftWriter.emit(String.format(", java_%s", param.name));
199200
}
200201

201202
if (returnSwiftType != null) {
202-
swiftWriter.emit(String.format(") else { %s }\n", isReturnTypeOptional ? "return nil" : "fatalError(\"Don't support nil here!\")"));
203+
swiftWriter.emitStatement(") else {");
204+
swiftWriter.emitStatement(isReturnTypeOptional ? "return nil" : "fatalError(\"Don't support nil here!\")");
205+
swiftWriter.emitStatement("}");
203206
}
204207
else {
205208
swiftWriter.emit(")\n");
@@ -209,14 +212,16 @@ File generateCode() throws IOException {
209212
if (isThrown) {
210213
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
211214
swiftWriter.emitStatement("throw error");
212-
swiftWriter.emitStatement("} else {");
215+
swiftWriter.emitStatement("}");
216+
swiftWriter.emitStatement("else {");
213217
swiftWriter.emitStatement("fatalError(\"JavaException\")");
214218
swiftWriter.emitStatement("}");
215219
}
216220
else {
217221
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
218222
swiftWriter.emitStatement("fatalError(\"JavaException: \\(error) \")");
219-
swiftWriter.emitStatement("} else {");
223+
swiftWriter.emitStatement("}");
224+
swiftWriter.emitStatement("else {");
220225
swiftWriter.emitStatement("fatalError(\"JavaException\")");
221226
swiftWriter.emitStatement("}");
222227
}

compiler/src/main/java/com/readdle/codegen/SwiftCallbackFuncDescriptor.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public class SwiftCallbackFuncDescriptor {
8787

8888
void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType) throws IOException {
8989
swiftWriter.emitEmptyLine();
90-
swiftWriter.emitStatement(String.format("static let javaMethod%1$s = try! JNI.%4$s(forClass:\"%2$s\", method: \"%1$s\", sig: \"%3$s\")",
90+
swiftWriter.emitStatement(String.format("static let javaMethod%1$s = try! JNI.%4$s(forClass: \"%2$s\", method: \"%1$s\", sig: \"%3$s\")",
9191
javaMethodName,
9292
javaFullName,
9393
sig,
@@ -188,7 +188,7 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
188188
swiftWriter.emit(String.format(jniMethodTemplate, swiftType, javaMethodName));
189189

190190
for (SwiftParamDescriptor param : params) {
191-
swiftWriter.emitStatement(String.format(", java%s", param.name));
191+
swiftWriter.emit(String.format(", java%s", param.name));
192192
}
193193

194194
if (returnSwiftType != null) {
@@ -197,18 +197,21 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
197197
if (isThrown) {
198198
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
199199
swiftWriter.emitStatement("throw error");
200-
swiftWriter.emitStatement("} else {");
200+
swiftWriter.emitStatement("}");
201+
swiftWriter.emitStatement("else {");
201202
swiftWriter.emitStatement("fatalError(\"JavaException\")");
202203
swiftWriter.emitStatement("}");
203204
}
204205
else {
205206
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
206207
swiftWriter.emitStatement("fatalError(\"JavaException: \\(error) \")");
207-
swiftWriter.emitStatement("} else {");
208+
swiftWriter.emitStatement("}");
209+
swiftWriter.emitStatement("else {");
208210
swiftWriter.emitStatement("fatalError(\"JavaException\")");
209211
swiftWriter.emitStatement("}");
210212
}
211-
swiftWriter.emitStatement("} else {");
213+
swiftWriter.emitStatement("}");
214+
swiftWriter.emitStatement("else {");
212215
if (isReturnTypeOptional) {
213216
swiftWriter.emitStatement("return nil");
214217
}
@@ -225,14 +228,16 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
225228
if (isThrown) {
226229
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
227230
swiftWriter.emitStatement("throw error");
228-
swiftWriter.emitStatement("} else {");
231+
swiftWriter.emitStatement("}");
232+
swiftWriter.emitStatement("else {");
229233
swiftWriter.emitStatement("fatalError(\"JavaException\")");
230234
swiftWriter.emitStatement("}");
231235
}
232236
else {
233237
swiftWriter.emitStatement("if let error = try? NSError.from(javaObject: throwable) {");
234238
swiftWriter.emitStatement("fatalError(\"JavaException: \\(error) \")");
235-
swiftWriter.emitStatement("} else {");
239+
swiftWriter.emitStatement("}");
240+
swiftWriter.emitStatement("else {");
236241
swiftWriter.emitStatement("fatalError(\"JavaException\")");
237242
swiftWriter.emitStatement("}");
238243
}
@@ -259,8 +264,6 @@ void generateCode(SwiftWriter swiftWriter, String javaFullName, String swiftType
259264
}
260265

261266
swiftWriter.emitStatement("}");
262-
263-
swiftWriter.emitEmptyLine();
264267
}
265268

266269
@Override

compiler/src/main/java/com/readdle/codegen/SwiftDelegateDescriptor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ File generateCode() throws IOException {
166166
swiftWriter.emitImports(importPackages);
167167
swiftWriter.emitEmptyLine();
168168

169-
swiftWriter.emitStatement(String.format("fileprivate let javaClass = JNI.GlobalFindClass(\"%s\")!", javaFullName));
169+
swiftWriter.emitStatement(String.format("private let javaClass = JNI.GlobalFindClass(\"%s\")!", javaFullName));
170170

171171
if (!isInterface) {
172172
if (pointerBasicTypeSig != null) {
173-
swiftWriter.emitStatement(String.format("fileprivate let javaPointerClass = JNI.GlobalFindClass(\"%s\")!", pointerBasicTypeSig));
174-
swiftWriter.emitStatement("fileprivate let javaSwiftPointerFiled = JNI.api.GetFieldID(JNI.env, javaPointerClass, \"nativePointer\", \"J\")");
173+
swiftWriter.emitStatement(String.format("private let javaPointerClass = JNI.GlobalFindClass(\"%s\")!", pointerBasicTypeSig));
174+
swiftWriter.emitStatement("private let javaSwiftPointerFiled = JNI.api.GetFieldID(JNI.env, javaPointerClass, \"nativePointer\", \"J\")");
175175
} else {
176-
swiftWriter.emitStatement("fileprivate let javaSwiftPointerFiled = JNI.api.GetFieldID(JNI.env, javaClass, \"nativePointer\", \"J\")");
176+
swiftWriter.emitStatement("private let javaSwiftPointerFiled = JNI.api.GetFieldID(JNI.env, javaClass, \"nativePointer\", \"J\")");
177177
}
178178
}
179179

compiler/src/main/java/com/readdle/codegen/SwiftFuncDescriptor.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
115115
if (param.isOptional) {
116116
swiftWriter.emitStatement(String.format("if let j%1$s = j%1$s {", param.name));
117117
swiftWriter.emitStatement(String.format("%1$s = try %2$s.from(javaObject: j%1$s)", param.name, param.swiftType.swiftConstructorType));
118-
swiftWriter.emitStatement("} else {");
118+
swiftWriter.emitStatement("}");
119+
swiftWriter.emitStatement("else {");
119120
swiftWriter.emitStatement(String.format("%s = nil", param.name));
120121
swiftWriter.emitStatement("}");
121122
}
@@ -137,11 +138,16 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
137138
swiftWriter.emitStatement("do {");
138139
}
139140

140-
swiftWriter.emit(String.format("%s%s%s.%s(",
141+
String swiftMethodName = this.swiftMethodName;
142+
if (isStatic && swiftMethodName.equals("init")) {
143+
swiftMethodName = "";
144+
}
145+
146+
swiftWriter.emit(String.format("%s%s%s%s(",
141147
returnSwiftType != null ? "let result = " : "",
142148
isThrown ? "try " : "",
143149
isStatic ? swiftType : "swiftSelf",
144-
swiftMethodName));
150+
swiftMethodName.length() > 0 ? "." + swiftMethodName : ""));
145151

146152
for (int i = 0; i < params.size(); i++) {
147153
SwiftParamDescriptor param = params.get(i);
@@ -180,8 +186,6 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
180186
}
181187

182188
swiftWriter.emitStatement("}");
183-
184-
swiftWriter.emitEmptyLine();
185189
}
186190

187191
@Override

compiler/src/main/java/com/readdle/codegen/SwiftGetterDescriptor.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
import java.io.IOException;
66
import java.util.ArrayList;
7-
import java.util.Arrays;
8-
import java.util.Collections;
97

108
import javax.lang.model.element.ExecutableElement;
119
import javax.lang.model.element.Modifier;
@@ -88,8 +86,6 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
8886
}
8987

9088
swiftWriter.emitStatement("}");
91-
92-
swiftWriter.emitEmptyLine();
9389
}
9490

9591
@Override

compiler/src/main/java/com/readdle/codegen/SwiftReferenceDescriptor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,10 @@ File generateCode() throws IOException {
133133
swiftWriter.emitImports(importPackages);
134134
swiftWriter.emitEmptyLine();
135135

136-
swiftWriter.emitStatement(String.format("fileprivate let javaClass = JNI.GlobalFindClass(\"%s\")!", javaFullName));
137-
swiftWriter.emitStatement("fileprivate let javaSwiftPointerFiled = JNI.api.GetFieldID(JNI.env, javaClass, \"nativePointer\", \"J\")");
136+
swiftWriter.emitStatement(String.format("private let javaClass = JNI.GlobalFindClass(\"%s\")!", javaFullName));
137+
swiftWriter.emitStatement("private let javaSwiftPointerFiled = JNI.api.GetFieldID(JNI.env, javaClass, \"nativePointer\", \"J\")");
138138

139-
swiftWriter.emitStatement(String.format("fileprivate let javaConstructor = try! JNI.getJavaEmptyConstructor(forClass: \"%s\")", javaFullName));
139+
swiftWriter.emitStatement(String.format("private let javaConstructor = try! JNI.getJavaEmptyConstructor(forClass: \"%s\")", javaFullName));
140140

141141
swiftWriter.emitEmptyLine();
142142
swiftWriter.beginExtension(simpleTypeName);

compiler/src/main/java/com/readdle/codegen/SwiftSetterDescriptor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
6969
if (param.isOptional) {
7070
swiftWriter.emitStatement(String.format("if let j%1$s = j%1$s {", param.name));
7171
swiftWriter.emitStatement(String.format("%1$s = try %2$s.from(javaObject: j%1$s)", param.name, param.swiftType.swiftConstructorType));
72-
swiftWriter.emitStatement("} else {");
72+
swiftWriter.emitStatement("}");
73+
swiftWriter.emitStatement("else {");
7374
swiftWriter.emitStatement(String.format("%s = nil", param.name));
7475
swiftWriter.emitStatement("}");
7576
}
@@ -86,8 +87,6 @@ public void generateCode(SwiftWriter swiftWriter, String javaFullName, String sw
8687

8788
swiftWriter.emitStatement(String.format("%s.%s = %s", isStatic ? swiftType : "swiftSelf", swiftName, param.name));
8889
swiftWriter.emitStatement("}");
89-
90-
swiftWriter.emitEmptyLine();
9190
}
9291

9392
@Override

compiler/src/main/java/com/readdle/codegen/SwiftWriter.java

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,83 @@
44
import java.io.FileWriter;
55
import java.io.IOException;
66
import java.io.Writer;
7+
import java.text.Collator;
8+
import java.util.ArrayList;
9+
import java.util.Arrays;
10+
import java.util.Collections;
11+
import java.util.List;
12+
import java.util.Locale;
713

814
public class SwiftWriter {
915

16+
private static class AlignedFileWriter extends FileWriter {
17+
private static final char MARGIN = '\t';
18+
private int currentLevel = 0;
19+
private boolean printMargin = false;
20+
21+
private AlignedFileWriter(File file) throws IOException {
22+
super(file);
23+
}
24+
25+
private void appendCharacter(Character character) throws IOException {
26+
if (printMargin) {
27+
for (int i = 0; i < currentLevel; i++) {
28+
super.append(MARGIN);
29+
}
30+
31+
printMargin = false;
32+
}
33+
34+
super.append(character);
35+
}
36+
37+
public Writer append(CharSequence charSequence) throws IOException {
38+
for (int i = 0; i < charSequence.length(); i++) {
39+
char c = charSequence.charAt(i);
40+
41+
42+
if (c == '}') {
43+
printMargin = true;
44+
currentLevel--;
45+
}
46+
47+
appendCharacter(c);
48+
49+
if (c == '\n') {
50+
printMargin = true;
51+
}
52+
53+
if (c == '{') {
54+
currentLevel++;
55+
}
56+
}
57+
return this;
58+
}
59+
}
60+
1061
private final Writer writer;
1162

1263
public SwiftWriter(File file) throws IOException {
13-
this.writer = new FileWriter(file);
64+
this.writer = new AlignedFileWriter(file);
1465
}
1566

1667
public void close() throws IOException {
1768
this.writer.flush();
1869
this.writer.close();
1970
}
2071

72+
private static final String[] defaultImports = {"Foundation", "Java", "java_swift", "JavaCoder", "AnyCodable"};
73+
2174
public void emitImports(String[] importPackages) throws IOException {
2275
this.writer.append("/* This file was generated with Readdle SwiftJava Codegen */\n");
2376
this.writer.append("/* Don't change it manually! */\n");
2477

25-
this.writer.append("import Foundation\n");
26-
this.writer.append("import Java\n");
27-
this.writer.append("import java_swift\n");
28-
this.writer.append("import JavaCoder\n");
29-
this.writer.append("import AnyCodable\n");
78+
List<String> allPackages = new ArrayList<>();
79+
allPackages.addAll(Arrays.asList(defaultImports));
80+
allPackages.addAll(Arrays.asList(importPackages));
81+
Collections.sort(allPackages, Collator.getInstance(Locale.US));
3082

31-
for (String importPackage : importPackages) {
83+
for (String importPackage : allPackages) {
3284
this.writer.append(String.format("import %s\n", importPackage));
3385
}
3486
}

0 commit comments

Comments
 (0)