11package util
22
33fun 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