diff --git a/gradle.properties b/gradle.properties index c6bbe3a..d2efa30 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ kotlin.mpp.enableGranularSourceSetsMetadata=true # Maven GROUP=cafe.adriel.lyricist -VERSION_NAME=1.2.0 +VERSION_NAME=1.2.1 POM_DESCRIPTION=The missing I18N/L10N library for Jetpack Compose! POM_INCEPTION_YEAR=2021 diff --git a/lyricist-processor/src/main/java/cafe/adriel/lyricist/processor/internal/LyricistSymbolProcessor.kt b/lyricist-processor/src/main/java/cafe/adriel/lyricist/processor/internal/LyricistSymbolProcessor.kt index 6e064a3..99aa4ef 100644 --- a/lyricist-processor/src/main/java/cafe/adriel/lyricist/processor/internal/LyricistSymbolProcessor.kt +++ b/lyricist-processor/src/main/java/cafe/adriel/lyricist/processor/internal/LyricistSymbolProcessor.kt @@ -38,6 +38,11 @@ internal class LyricistSymbolProcessor( val stringsName = "${config.moduleName.toLowerCamelCase()}Strings" + val defaultLanguageTag = declarations + .firstNotNullOfOrNull { it.annotations.getDefaultLanguageTag() } + ?.let { "\"$it\"" } + ?: "Locale.current.toLanguageTag()" + val defaultStrings = declarations .first { it.annotations.getValue(ANNOTATION_PARAM_DEFAULT) == true } @@ -86,7 +91,7 @@ internal class LyricistSymbolProcessor( | |@Composable |public fun remember$fileName( - | languageTag: LanguageTag = Locale.current.toLanguageTag() + | languageTag: LanguageTag = $defaultLanguageTag |): Lyricist<$stringsClassOutput> = | rememberStrings($stringsName, languageTag) | @@ -133,6 +138,16 @@ internal class LyricistSymbolProcessor( private fun KSPropertyDeclaration.getClassQualifiedName(): String? = getter?.returnType?.resolve()?.declaration?.qualifiedName?.asString() + private fun Sequence.getDefaultLanguageTag(): String? = + firstOrNull { + withName(ANNOTATION_NAME) + ?.arguments + ?.withName(ANNOTATION_PARAM_DEFAULT) + ?.value == true + }?.arguments + ?.withName(ANNOTATION_PARAM_LANGUAGE_TAG) + ?.value as? String + private inline fun Sequence.getValue(argumentName: String): T? = withName(ANNOTATION_NAME) ?.arguments