blob: ae3840975fc295a6677ef3c0e8d2599d912876e1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package com.romangraef.jrconfig
import java.util.function.Function
abstract class TransformerConfigVariable<T>(private val provider: ConfigProvider, private val point: String) :
ConfigVariable<T> {
protected abstract fun transform(value: String): T
protected abstract fun serialize(data: T): String
override fun get(): T {
return transform(provider.provideData(point) ?: throw ConfigMissingException(point))
}
override fun set(value: T) =
provider.setData(point, serialize(value))
companion object {
/**
* Quick and dirty. Please consider using a subclass.
*/
fun <T> getVariable(
provider: ConfigProvider,
point: String,
transform: Function<String, T>,
serialize: Function<T, String>
): TransformerConfigVariable<T> {
return object : TransformerConfigVariable<T>(provider, point) {
override fun transform(value: String): T {
return transform.apply(value)
}
override fun serialize(data: T): String {
return serialize.apply(data)
}
}
}
}
}
|