2022-02-08 12:48:49 +00:00
|
|
|
package dev.inmo.jsuikit.utils
|
|
|
|
|
|
|
|
class AttributeBuilder (
|
|
|
|
val attributeName: String,
|
2022-02-08 19:26:33 +00:00
|
|
|
val skipNullValues: Boolean = true,
|
2022-02-08 12:48:49 +00:00
|
|
|
private val parametersPreset: MutableMap<String, String?> = mutableMapOf()
|
|
|
|
) {
|
|
|
|
|
2022-02-08 19:26:33 +00:00
|
|
|
fun add(k: String, v: Any? = null) {
|
|
|
|
if (v != null || !skipNullValues) {
|
|
|
|
parametersPreset[k] = v ?.toString()
|
|
|
|
}
|
|
|
|
}
|
2022-02-08 19:18:51 +00:00
|
|
|
infix fun String.to(value: Any?) = add(this, value)
|
2022-02-08 12:48:49 +00:00
|
|
|
operator fun String.unaryPlus() = add(this, null)
|
|
|
|
|
|
|
|
fun build(): Pair<String, String> = Pair(
|
|
|
|
attributeName, parametersPreset.toList().joinToString(";") {
|
|
|
|
"${it.first}${it.second ?.let { ": $it" } ?: ""}"
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2022-02-08 19:26:33 +00:00
|
|
|
inline fun buildAttribute(attributeName: String, skipNullValues: Boolean = true, block: AttributeBuilder.() -> Unit) = AttributeBuilder(
|
|
|
|
attributeName,
|
|
|
|
skipNullValues
|
2022-02-08 12:48:49 +00:00
|
|
|
).apply(block).build()
|