From 0dd0559a426e70dcf4e6b9a8d83e93103972f5e0 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Sun, 16 Nov 2025 00:36:23 +0800 Subject: [PATCH] refactor: separate escaping logic for JavaPoet and KotlinPoet code generation --- .../gropify/plugin/generator/JavaCodeGenerator.kt | 4 ++-- .../gropify/plugin/generator/KotlinCodeGenerator.kt | 4 ++-- .../gropify/plugin/generator/extension/Generator.kt | 11 +++++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/JavaCodeGenerator.kt b/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/JavaCodeGenerator.kt index c65cca9..cf3c5b2 100644 --- a/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/JavaCodeGenerator.kt +++ b/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/JavaCodeGenerator.kt @@ -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.SourceCodeSpec 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.toPoetGenerationContent import com.highcapable.gropify.plugin.generator.extension.toUnderscores import com.highcapable.gropify.utils.extension.firstNumberToLetter import com.palantir.javapoet.ClassName @@ -71,7 +71,7 @@ internal class JavaCodeGenerator { addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL) else addModifiers(Modifier.STATIC, Modifier.FINAL) - initializer(currentValue.codeValue.toPoetGenerationContent()) + initializer(currentValue.codeValue.escapeForJavaPoet()) }.build() ) } diff --git a/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/KotlinCodeGenerator.kt b/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/KotlinCodeGenerator.kt index 82f714f..c977cf8 100644 --- a/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/KotlinCodeGenerator.kt +++ b/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/KotlinCodeGenerator.kt @@ -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.SourceCodeSpec 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.toPoetGenerationContent import com.highcapable.gropify.plugin.generator.extension.toUnderscores import com.highcapable.gropify.utils.extension.firstNumberToLetter import com.squareup.kotlinpoet.FileSpec @@ -72,7 +72,7 @@ internal class KotlinCodeGenerator { if (config.isRestrictedAccessEnabled) addModifiers(KModifier.INTERNAL) addModifiers(KModifier.CONST) - initializer(currentValue.codeValue.toPoetGenerationContent()) + initializer(currentValue.codeValue.escapeForKotlinPoet()) }.build()) } }.build()) diff --git a/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/extension/Generator.kt b/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/extension/Generator.kt index efabeb1..46a8935 100644 --- a/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/extension/Generator.kt +++ b/gropify-gradle-plugin/src/main/kotlin/com/highcapable/gropify/plugin/generator/extension/Generator.kt @@ -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] * @return [String] */ -internal fun String.toPoetGenerationContent() = replace(" ", "·").replace("%", "%%") \ No newline at end of file +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(" ", "·") \ No newline at end of file