From a22fd2a6b3248d8b9309d3a88ccc7e107d0cfcd8 Mon Sep 17 00:00:00 2001 From: Roman Gräf Date: Thu, 30 Apr 2020 03:28:48 +0200 Subject: Initial commit --- .../jrconfig/TransformerConfigVariable.kt | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/kotlin/com/romangraef/jrconfig/TransformerConfigVariable.kt (limited to 'src/main/kotlin/com/romangraef/jrconfig/TransformerConfigVariable.kt') diff --git a/src/main/kotlin/com/romangraef/jrconfig/TransformerConfigVariable.kt b/src/main/kotlin/com/romangraef/jrconfig/TransformerConfigVariable.kt new file mode 100644 index 0000000..ae38409 --- /dev/null +++ b/src/main/kotlin/com/romangraef/jrconfig/TransformerConfigVariable.kt @@ -0,0 +1,41 @@ +package com.romangraef.jrconfig + +import java.util.function.Function + +abstract class TransformerConfigVariable(private val provider: ConfigProvider, private val point: String) : + ConfigVariable { + 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 getVariable( + provider: ConfigProvider, + point: String, + transform: Function, + serialize: Function + ): TransformerConfigVariable { + return object : TransformerConfigVariable(provider, point) { + override fun transform(value: String): T { + return transform.apply(value) + } + + override fun serialize(data: T): String { + return serialize.apply(data) + } + } + } + } + +} \ No newline at end of file -- cgit