blob: e1034c25e946968c68d76da5204366cdc0d2896c (
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
42
43
44
45
46
47
|
package com.romangraef.jrconfig
import java.util.function.Function
abstract class TransformerConfigVariable<T>(private val provider: ConfigSaveLoadProvider, 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))
}
override fun defaultValue(t: T?): ConfigVariable<T> = if (t == null) {
this
} else {
DefaultConfigVariable(this, t)
}
companion object {
/**
* Quick and dirty. Please consider using a subclass.
*/
fun <T> getVariable(
provider: ConfigSaveLoadProvider,
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)
}
}
}
}
}
|