diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | src/main/kotlin/com/romangraef/jrconfig/Config.kt | 8 |
2 files changed, 9 insertions, 1 deletions
@@ -63,7 +63,7 @@ repositories { } dependencies { - implementation("com.github.romangraef", "jrconfig", "v1.1") + implementation("com.github.romangraef", "jrconfig", "v1.2") } ``` The version can be either a git shortref, or a [tag](https://github.com/romangraef/jrconfig/tags). diff --git a/src/main/kotlin/com/romangraef/jrconfig/Config.kt b/src/main/kotlin/com/romangraef/jrconfig/Config.kt index 1a1108b..d49bf1f 100644 --- a/src/main/kotlin/com/romangraef/jrconfig/Config.kt +++ b/src/main/kotlin/com/romangraef/jrconfig/Config.kt @@ -6,6 +6,7 @@ typealias ConfigVariableProvider<T> = (ConfigSaveLoadProvider, String) -> Config object Config { private var configProvider = mutableListOf<ConfigProvider>() + private val _usedPoints = mutableListOf<String>() private val map: MutableMap<Class<*>, ConfigVariableProvider<*>> = mutableMapOf() private val proxyProvider: ConfigSaveLoadProvider = object : ConfigSaveLoadProvider { @@ -27,16 +28,23 @@ object Config { map[String::class.java] = ::StringVariable } + /** + * A list of all registered points. This list is not necessarily complete. + */ + val usedPoints + get() = _usedPoints.toList() @Suppress("UNCHECKED_CAST") @JvmStatic fun <T> get(clazz: Class<out T>, point: String): ConfigVariable<T> { + _usedPoints.add(point) return (map[clazz] as? ConfigVariableProvider<T>)?.invoke(proxyProvider, point) ?: throw ConfigMissingProviderException(clazz) } @JvmStatic fun <T : Enum<T>> getEnum(enumClass: Class<T>, point: String): ConfigVariable<T> { + _usedPoints.add(point) return EnumVariable(enumClass, proxyProvider, point) } |