Welcome to ConstantCreator!
ConstantCreator is a KSP-based library that can generate Unique Int constants
from your classes that are annotated with @HasConstant
.
First, annotate your class with @HasConstant
.
Let's see it in action:
@HasConstant
class SampleClass
// Can change nameSuffix of generated constant.
@HasConstant(nameSuffix = "_ViewType")
class SampleViewHolder
// HasConstant can be repeated to generate multiple constants.
@HasConstant(nameSuffix = "_DataConst")
@HasConstant(nameSuffix = "_ViewConst")
class MyAdapter(val data: Data, val view: View)
The code above will generate the following code:
val SampleClass_CONST = 1292182827
val SampleViewHolder_ViewType = 232312827
val MyAdapter_DataConst = -987012921
val MyAdapter_ViewConst = 65756129218
You can change constant name suffix with nameSuffix
parameter in @HasConstant
(Defaults to _CONST).
You can safely use the generated constants anywhere:
class SomeAdapter {
override fun getViewType() : Int = SampleViewHolder_ViewType
}
Add the following to your build.gradle (or build.gradle.kts)
plugins {
id 'com.google.devtools.ksp' version '1.6.21-1.0.5'
// the version according to your Kotlin and KSP
}
// to add generated files support for IDE
android {
kotlin {
sourceSets.debug {
kotlin.srcDirs += 'build/generated/ksp/debug/kotlin'
}
sourceSets.release {
kotlin.srcDirs += 'build/generated/ksp/release/kotlin'
}
}
}
dependencies {
implementation "com.github.cafebazaar.ConstantCreator:annotations:{latest_version}"
ksp "com.github.cafebazaar.ConstantCreator:processor:{latest_version}"
}
Please let me know what you think about this project by filing a Github issue
Any type of contribution includes bug fixes and adding new features are welcomed But priorities are:
- Implement a way to create multiple unique numbers series (Right now using
@HasConst
creates one series of unique constants) - Finish
@HasEnumConstant
annotation processor to generate enum with constants for annotated classes.