diff --git a/buildSrc/src/main/kotlin/tool/generator/api/ast_content.kt b/buildSrc/src/main/kotlin/tool/generator/api/ast_content.kt index ec57001..0083e5d 100644 --- a/buildSrc/src/main/kotlin/tool/generator/api/ast_content.kt +++ b/buildSrc/src/main/kotlin/tool/generator/api/ast_content.kt @@ -10,7 +10,6 @@ fun astEnumContent(markerAnnotation: CtAnnotation<*>): List { val file = markerAnnotation.getValueAsString(A_VALUE_FILE)!! val qualType = markerAnnotation.getValueAsString(A_VALUE_QUAL_TYPE)!! - val sanitizeName = markerAnnotation.getValueAsString(A_VALUE_SANITIZE_NAME)?.takeIf(String::isNotEmpty) ?: qualType val astRoot = AstParser.readFromResource(file) val enums = astRoot.decls.filterDecls0 { @@ -24,7 +23,7 @@ fun astEnumContent(markerAnnotation: CtAnnotation<*>): List { f.setModifiers(setOf(ModifierKind.PUBLIC, ModifierKind.STATIC, ModifierKind.FINAL)) f.setType(factory.createTypeParam("int")) - f.setSimpleName(e.name.replace(sanitizeName, "")) + f.setSimpleName(sanitizeName(markerAnnotation.getValueSanitizeName(qualType), e.name)) buildString { if (e.docComment != null) { appendLine(e.docComment) @@ -49,6 +48,18 @@ fun astEnumContent(markerAnnotation: CtAnnotation<*>): List { return result } +private fun CtAnnotation<*>.getValueSanitizeName(default: String): String { + return getValueAsString(A_VALUE_SANITIZE_NAME)?.takeIf(String::isNotEmpty) ?: default +} + +private fun sanitizeName(aValueSanitizeName: String, name: String): String { + var result = name.replace(aValueSanitizeName, "").trim() + if (result.toIntOrNull() != null) { + result = "_$result" + } + return result +} + private fun sanitizeDocComment(doc: String): String { return doc .replace("*/", "* /")