This is a Mapper Libraly like a ModelMapper
for Kotlin
.
You can call KFunction
(e.g. method reference
) from Object
.
// before
val dst = Dst(
param1 = src.param1,
param2 = src.param2,
param3 = src.param3,
param4 = src.param4,
param5 = src.param5,
...
)
// after
val newInstance = KMapper(::Dst).map(src)
Published on JitPack.
Please see here for the introduction method.
class Src1(val arg1: String, val arg2: String)
val src2: Map<String, Any?> = mapOf("arg3" to 1, "arg4" to 1.0)
val src3: Pair<String, Any?> = "arg5" to null
class Dst(
val arg1: String,
val arg2: String,
val arg3: Int,
val arg4: Double,
val arg5: String?
)
val newInstance = KMapper(::Dst).map(src1, src2, src3)
class Src(@KGetterAlias("aliased") val str: String)
class Dst(val aliased: String)
val newInstance = KMapper(::Dst).map(src)
class Src(val str: String)
class Dst(@param:KPropertyAlias("str") private val _src: String) {
val src = _src.someArrangement
}
val newInstance = KMapper(::Dst).map(src)
val srcMap = mapOf("snake_case" to "SnakeCase")
class Dst(val snakeCase: String)
val dst: Dst = KMapper(::DataClass) { camelToSnake(it) }.map(src)
class ConverterClass @KConverter constructor(val arg: String) {
companion object {
@KConverter
fun fromInt(arg: Int): ConverterClass {
return ConverterClass(arg.toString)
}
}
}
class Src(val arg1: String, val arg2: Int)
class Dst(val arg1: ConverterClass, val arg2: ConverterClass)
val newInstance = KMapper(::Dst).map(src)