Skip to content

Commit

Permalink
clean up naming
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaudgiuliani committed Jan 28, 2025
1 parent 290fd02 commit d8106bc
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class DefinitionWriter(
}

if (def.alreadyGenerated == true){
LOGGER.logging("skip ${def.label} -> ${TagFactory.getTag(def)} - already generated")
LOGGER.logging("skip ${def.label} -> ${TagFactory.getTagClass(def)} - already generated")
} else {
if (def.isExpect.not()){
LOGGER.logging("write definition ${def.label} ...")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ class KoinTagWriter(
}

if (module.alreadyGenerated == false){
val tag = TagFactory.getTag(module).camelCase()
val tag = TagFactory.getTagClass(module)
if (tag !in alreadyDeclaredTags) {
if (isConfigCheckActive){
val metaLine = MetaAnnotationFactory.generate(module)
Expand All @@ -120,9 +120,9 @@ class KoinTagWriter(
private fun writeScopeTag(
scope: KSDeclaration
) {
val name = scope.qualifiedName?.asString()
if (name !in typeWhiteList) {
val tag = TagFactory.getTag(scope)
val scopeName = scope.qualifiedName?.asString()
if (scopeName !in typeWhiteList) {
val tag = TagFactory.getTagClass(scope)
val alreadyGenerated = resolver.isAlreadyExisting(tag)
if (tag !in alreadyDeclaredTags && !alreadyGenerated) {
writeTag(tag)
Expand All @@ -138,7 +138,7 @@ class KoinTagWriter(
}

if (!definition.isExpect && definition.alreadyGenerated == false){
val tag = TagFactory.getTag(definition)
val tag = TagFactory.getTagClass(definition)
if (tag !in alreadyDeclaredTags) {
if (isConfigCheckActive){
val metaLine = MetaAnnotationFactory.generate(definition)
Expand All @@ -155,7 +155,7 @@ class KoinTagWriter(
) {
val name = binding.qualifiedName?.asString()
if (name !in typeWhiteList) {
val tag = TagFactory.getTag(def, binding).camelCase()
val tag = TagFactory.getTagClass(def, binding)
val alreadyGenerated = resolver.isAlreadyExisting(tag)
if (tag !in alreadyDeclaredTags && !alreadyGenerated) {
writeTag(tag)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ object MetaAnnotationFactory {
val fullpath = module.packageName + "." + module.name

val includesTags = if (module.includes?.isNotEmpty() == true) {
module.includes.joinToString("\",\"", prefix = "\"", postfix = "\"") { TagFactory.getTag(it) }
module.includes.joinToString("\",\"", prefix = "\"", postfix = "\"") { TagFactory.getMetaTag(it) }
} else null
val includesString = includesTags?.let { ", includes=[$it]" } ?: ""

Expand All @@ -28,10 +28,10 @@ object MetaAnnotationFactory {
val cleanedDependencies = dependencies
.filter { !it.alreadyProvided && !it.hasDefault && !it.isNullable }
.mapNotNull { dep ->
if (dep.kind == DependencyKind.Single) TagFactory.getTag(dep)
if (dep.kind == DependencyKind.Single) TagFactory.getMetaTag(dep)
else {
val ksDeclaration = extractLazyOrListType(dep)
ksDeclaration?.let { TagFactory.getTag(def, dep ,ksDeclaration) }
ksDeclaration?.let { TagFactory.getMetaTag(def, dep ,ksDeclaration) }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import org.koin.compiler.scanner.ext.getPackageName
import org.koin.compiler.type.clearPackageSymbols
import org.koin.compiler.verify.DefinitionVerification
import org.koin.compiler.verify.qualifiedNameCamelCase
import java.util.*

const val KOIN_TAG_SEPARATOR = "_"
private const val QUALIFIER_SYMBOL = "Q_"
Expand All @@ -25,7 +24,11 @@ object TagFactory {
}
}

fun getTag(module: KoinMetaData.ModuleInclude): String {
fun getTagClass(module: KoinMetaData.Module): String {
return getTag(module).camelCase()
}

fun getMetaTag(module: KoinMetaData.ModuleInclude): String {
return with(module) {
listOfNotNull(
packageName.clearPackageSymbols() + "." +className.capitalize(),
Expand All @@ -35,19 +38,19 @@ object TagFactory {
}
}

fun getTag(definition: KoinMetaData.Definition, clazz: KSDeclaration): String {
fun getTagClass(definition: KoinMetaData.Definition, clazz: KSDeclaration): String {
return with(definition) {
listOfNotNull(
clazz.qualifiedName?.asString() ?: "",
qualifier?.let { "$QUALIFIER_SYMBOL${escapeTagClass(it)}" },
scope?.getTagValue()?.camelCase()?.let { "$SCOPE_SYMBOL$it" },
if (isExpect) "Expect" else null,
if (isActual) "Actual" else null
).joinToString(separator = KOIN_TAG_SEPARATOR)
).joinToString(separator = KOIN_TAG_SEPARATOR).camelCase()
}
}

fun getTag(definition: KoinMetaData.Definition,dep: KoinMetaData.DefinitionParameter.Dependency ,clazz: KSDeclaration): String {
fun getMetaTag(definition: KoinMetaData.Definition,dep: KoinMetaData.DefinitionParameter.Dependency ,clazz: KSDeclaration): String {
return with(definition) {
listOfNotNull(
clazz.qualifiedName?.asString() ?: "",
Expand All @@ -59,11 +62,10 @@ object TagFactory {
}
}

fun getTag(classTag: String, dv: DefinitionVerification) = "$classTag$KOIN_TAG_SEPARATOR$SCOPE_SYMBOL${dv.scope}"
fun updateTagWithScope(classTag: String, dv: DefinitionVerification) = "$classTag$KOIN_TAG_SEPARATOR$SCOPE_SYMBOL${dv.scope}"
fun getTagClass(clazz: KSDeclaration): String = clazz.qualifiedNameCamelCase() ?: ""

fun getTag(clazz: KSDeclaration): String = clazz.qualifiedNameCamelCase() ?: ""

fun getTag(definition: KoinMetaData.Definition): String {
fun getTagClass(definition: KoinMetaData.Definition): String {
return with(definition) {
listOfNotNull(
packageName.camelCase().clearPackageSymbols() + label.capitalize(),
Expand All @@ -75,7 +77,7 @@ object TagFactory {
}
}

fun getTag(dep: KoinMetaData.DefinitionParameter.Dependency): String {
fun getMetaTag(dep: KoinMetaData.DefinitionParameter.Dependency): String {
return with(dep) {
val ksClassDeclaration = (dep.type.declaration as KSClassDeclaration)
val packageName = ksClassDeclaration.getPackageName().filterForbiddenKeywords()
Expand All @@ -99,8 +101,4 @@ object TagFactory {
qualifier.split(".").joinToString("") { it.capitalize() }
}
}

fun getTagFromFullPath(path: String) : String {
return path.split(".").joinToString(separator = "") { it.capitalize() }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ fun Resolver.isAlreadyExisting(def : KoinMetaData.Definition) : Boolean {
}

fun Resolver.getResolution(def : KoinMetaData.Definition) : KSDeclaration?{
return getResolutionForTag(TagFactory.getTag(def))
return getResolutionForTag(TagFactory.getTagClass(def))
}

fun Resolver.isAlreadyExisting(tag : String?) : Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class KoinConfigChecker(val logger: KSPLogger, val resolver: Resolver) {
val name = tagData[0]
val type = tagData[1].clearPackageSymbols()
val tag = type.camelCase()
val exists = if (dv.scope == null) resolver.isAlreadyExisting(tag) else resolver.isAlreadyExisting(tag) || resolver.isAlreadyExisting(TagFactory.getTag(tag,dv))
val exists = if (dv.scope == null) resolver.isAlreadyExisting(tag) else resolver.isAlreadyExisting(tag) || resolver.isAlreadyExisting(TagFactory.updateTagWithScope(tag,dv))
if (!exists && type !in typeWhiteList) {
logger.error("--> Missing Definition for property '$name : $type' in '${dv.value}'. Fix your configuration: add definition annotation on the class.")
}
Expand Down

0 comments on commit d8106bc

Please sign in to comment.