refactor: separate escaping logic for JavaPoet and KotlinPoet code generation

This commit is contained in:
2025-11-16 00:36:23 +08:00
parent a6f6ede46a
commit 0dd0559a42
3 changed files with 13 additions and 6 deletions

View File

@@ -27,8 +27,8 @@ import com.highcapable.gropify.plugin.config.proxy.GropifyConfig
import com.highcapable.gropify.plugin.generator.config.GenerateConfig import com.highcapable.gropify.plugin.generator.config.GenerateConfig
import com.highcapable.gropify.plugin.generator.config.SourceCodeSpec import com.highcapable.gropify.plugin.generator.config.SourceCodeSpec
import com.highcapable.gropify.plugin.generator.extension.PropertyMap import com.highcapable.gropify.plugin.generator.extension.PropertyMap
import com.highcapable.gropify.plugin.generator.extension.escapeForJavaPoet
import com.highcapable.gropify.plugin.generator.extension.toOptimize import com.highcapable.gropify.plugin.generator.extension.toOptimize
import com.highcapable.gropify.plugin.generator.extension.toPoetGenerationContent
import com.highcapable.gropify.plugin.generator.extension.toUnderscores import com.highcapable.gropify.plugin.generator.extension.toUnderscores
import com.highcapable.gropify.utils.extension.firstNumberToLetter import com.highcapable.gropify.utils.extension.firstNumberToLetter
import com.palantir.javapoet.ClassName import com.palantir.javapoet.ClassName
@@ -71,7 +71,7 @@ internal class JavaCodeGenerator {
addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
else addModifiers(Modifier.STATIC, Modifier.FINAL) else addModifiers(Modifier.STATIC, Modifier.FINAL)
initializer(currentValue.codeValue.toPoetGenerationContent()) initializer(currentValue.codeValue.escapeForJavaPoet())
}.build() }.build()
) )
} }

View File

@@ -27,8 +27,8 @@ import com.highcapable.gropify.plugin.config.proxy.GropifyConfig
import com.highcapable.gropify.plugin.generator.config.GenerateConfig import com.highcapable.gropify.plugin.generator.config.GenerateConfig
import com.highcapable.gropify.plugin.generator.config.SourceCodeSpec import com.highcapable.gropify.plugin.generator.config.SourceCodeSpec
import com.highcapable.gropify.plugin.generator.extension.PropertyMap import com.highcapable.gropify.plugin.generator.extension.PropertyMap
import com.highcapable.gropify.plugin.generator.extension.escapeForKotlinPoet
import com.highcapable.gropify.plugin.generator.extension.toOptimize import com.highcapable.gropify.plugin.generator.extension.toOptimize
import com.highcapable.gropify.plugin.generator.extension.toPoetGenerationContent
import com.highcapable.gropify.plugin.generator.extension.toUnderscores import com.highcapable.gropify.plugin.generator.extension.toUnderscores
import com.highcapable.gropify.utils.extension.firstNumberToLetter import com.highcapable.gropify.utils.extension.firstNumberToLetter
import com.squareup.kotlinpoet.FileSpec import com.squareup.kotlinpoet.FileSpec
@@ -72,7 +72,7 @@ internal class KotlinCodeGenerator {
if (config.isRestrictedAccessEnabled) addModifiers(KModifier.INTERNAL) if (config.isRestrictedAccessEnabled) addModifiers(KModifier.INTERNAL)
addModifiers(KModifier.CONST) addModifiers(KModifier.CONST)
initializer(currentValue.codeValue.toPoetGenerationContent()) initializer(currentValue.codeValue.escapeForKotlinPoet())
}.build()) }.build())
} }
}.build()) }.build())

View File

@@ -70,8 +70,15 @@ internal fun PropertyOptimizeMap.toUnderscores(): PropertyOptimizeMap {
} }
/** /**
* Escape percentage signs and replace spaces to middle dot for code generation. * Escape percentage signs for Javapoet code generation.
* @receiver [String] * @receiver [String]
* @return [String] * @return [String]
*/ */
internal fun String.toPoetGenerationContent() = replace(" ", "·").replace("%", "%%") internal fun String.escapeForJavaPoet() = replace("$", "$$")
/**
* Escape percentage signs and replace spaces to middle dot for Kotlinpoet code generation.
* @receiver [String]
* @return [String]
*/
internal fun String.escapeForKotlinPoet() = replace("%", "%%").replace("$", "\\$").replace(" ", "·")