Skip to content

Commit 7d50fd2

Browse files
committed
Add more type conversions
1 parent 381bf2d commit 7d50fd2

1 file changed

Lines changed: 48 additions & 6 deletions

File tree

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,53 @@
11
package util
22

33
fun mapJavaTypeToLua(javaType: String): String {
4-
return when (javaType) {
5-
"int", "float", "double", "long", "short", "byte" -> "number"
6-
"boolean" -> "boolean"
7-
"char", "String" -> "string"
8-
"void" -> "nil"
4+
println(javaType)
5+
return when {
6+
javaType.startsWith("List<") -> {
7+
val genericType = javaType.substringAfter("List<").substringBeforeLast(">")
8+
"table<${mapJavaTypeToLua(genericType)}>"
9+
}
10+
11+
javaType.startsWith("Set<") -> {
12+
val genericType = javaType.substringAfter("Set<").substringBeforeLast(">")
13+
"table<${mapJavaTypeToLua(genericType)}>"
14+
}
15+
16+
javaType.startsWith("Map<") -> {
17+
val keyValueTypes = javaType.substringAfter("Map<").substringBeforeLast(">").split(",")
18+
if (keyValueTypes.size == 2) {
19+
val keyType = mapJavaTypeToLua(keyValueTypes[0].trim())
20+
val valueType = mapJavaTypeToLua(keyValueTypes[1].trim())
21+
"table<$keyType, $valueType>"
22+
} else {
23+
"table"
24+
}
25+
}
26+
27+
javaType.endsWith("[]") -> {
28+
val elementType = javaType.removeSuffix("[]")
29+
"table<${mapJavaTypeToLua(elementType)}>"
30+
}
31+
32+
javaType.startsWith("Class<") -> {
33+
val innerType = javaType.substringAfter("Class<").substringBeforeLast(">")
34+
if (innerType.startsWith("? extends")) {
35+
val baseType = innerType.removePrefix("? extends ").trim()
36+
"optional<${mapJavaTypeToLua(baseType)}>"
37+
} else {
38+
"optional<${mapJavaTypeToLua(innerType)}>"
39+
}
40+
}
41+
42+
javaType.endsWith("?") -> {
43+
val baseType = javaType.removeSuffix("?")
44+
"${mapJavaTypeToLua(baseType)}?"
45+
}
46+
47+
javaType in listOf("int", "float", "double", "long", "short", "byte") -> "number"
48+
javaType == "boolean" -> "boolean"
49+
javaType in listOf("char", "String") -> "string"
50+
javaType == "void" -> "nil"
951
else -> javaType.substringAfterLast(".") // Simplify fully qualified names
1052
}
11-
}
53+
}

0 commit comments

Comments
 (0)