Skip to content

Commit 25e43e6

Browse files
committed
Enum and other improvements
1 parent 79b76cb commit 25e43e6

5 files changed

Lines changed: 31 additions & 2 deletions

File tree

src/main/kotlin/generator/LuaEmitter.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package generator
22

33
import parser.ParsedClass
4+
import parser.Visibility
45
import util.extractJavaDocInfo
56
import util.mapJavaTypeToLua
67

@@ -18,7 +19,7 @@ class LuaEmitter {
1819

1920
// Process fields (variables)
2021
parsedClass.fields.forEach { field ->
21-
sb.appendLine("---@field ${field.name} ${mapJavaTypeToLua(field.type)}")
22+
sb.appendLine("---@field ${field.visibility.toString().lowercase()} ${field.name} ${mapJavaTypeToLua(field.type)}")
2223
}
2324

2425
parsedClass.constructors.forEach { constructor ->
@@ -58,6 +59,12 @@ class LuaEmitter {
5859
sb.appendLine("---@param $paramName${if (!param.required) "?" else ""} $luaType ${param.comment ?: ""}")
5960
}
6061

62+
when (method.visibility) {
63+
Visibility.PUBLIC -> sb.appendLine("---@public")
64+
Visibility.PROTECTED -> sb.appendLine("---@protected")
65+
Visibility.PRIVATE -> sb.appendLine("---@private")
66+
}
67+
6168
sb.appendLine("---@return ${mapJavaTypeToLua(method.returnType)} ${doc.returnComment ?: ""}")
6269

6370
if (doc.mainComment.isNotBlank()) {

src/main/kotlin/parser/JavaSourceParser.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ class JavaSourceParser : ClassParser {
4444
fields = enumDecl.entries.map {
4545
ParsedField(
4646
name = it.nameAsString,
47-
type = "string",
47+
type = enumDecl.nameAsString,
48+
visibility = Visibility.PUBLIC,
4849
comment = it.comment.map { c -> extractJavaDocInfo(c.content).mainComment }.orElse(null)
4950
)
5051
},
@@ -91,6 +92,7 @@ class JavaSourceParser : ClassParser {
9192
required = !isNullableComment,
9293
)
9394
},
95+
visibility = Visibility.fromString(constructor.accessSpecifier.toString().uppercase()),
9496
comment = constructor.comment.map { extractJavaDocInfo(it.content).mainComment }.orElse(null),
9597
isDeprecated = constructor.annotations.any { it.nameAsString == "Deprecated" },
9698
isAsync = false, // Constructors are not async
@@ -112,6 +114,7 @@ class JavaSourceParser : ClassParser {
112114
required = !isNullableComment,
113115
)
114116
},
117+
visibility = Visibility.fromString(method.accessSpecifier.toString().uppercase()),
115118
comment = method.comment.map { extractJavaDocInfo(it.content).mainComment }.orElse(null),
116119
isDeprecated = method.annotations.any { it.nameAsString == "Deprecated" },
117120
isAsync = method.nameAsString.contains(
@@ -126,6 +129,7 @@ class JavaSourceParser : ClassParser {
126129
ParsedField(
127130
name = variable.nameAsString,
128131
type = field.elementType.asString(),
132+
visibility = Visibility.fromString(field.accessSpecifier.toString().uppercase()),
129133
comment = field.comment.map { extractJavaDocInfo(it.content).mainComment }.orElse(null)
130134
)
131135
}

src/main/kotlin/parser/ParsedField.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ package parser
33
data class ParsedField(
44
val name: String,
55
val type: String,
6+
val visibility: Visibility,
67
val comment: String?
78
)

src/main/kotlin/parser/ParsedMethod.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package parser
33
data class ParsedMethod(
44
val name: String,
55
val returnType: String,
6+
val visibility: Visibility,
67
val parameters: List<ParsedParameter>,
78
val comment: String?,
89
val isDeprecated: Boolean = false,
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package parser
2+
3+
enum class Visibility {
4+
PUBLIC, PROTECTED, PRIVATE;
5+
6+
companion object {
7+
fun fromString(visibility: String): Visibility {
8+
return when (visibility) {
9+
"PUBLIC" -> PUBLIC
10+
"PROTECTED" -> PROTECTED
11+
"PRIVATE" -> PRIVATE
12+
else -> PUBLIC
13+
}
14+
}
15+
}
16+
}

0 commit comments

Comments
 (0)