This module adds RuneScape-focused preprocessing before TOML decoding.
Use the mapper extensions in dev.openrune.toml.rsconfig:
decodeRuneScape<T>(...)decodeRuneScapeList<T>(...)decodeRuneScapeValue<T>(...)
val mapper = tomlMapper {
rsconfig {
allowedTableHeaders("config", "config2")
enableConstantProvider()
enabledTokenizedReplacement(
mapOf("param_key_one" to "hey3")
)
}
}[[tokenizedReplacement]]
first_settings = 90
param_key_one = "dffd"
[[config]]
settings = "%first_settings%"
[config.params]
"%param_key_one%" = 34Global keys must use %global.<name>%.
[[config]]
settings = 90
[config.params]
"obj.shark" = "%global.param_key_one%"enabledTokenizedReplacement(mapOf("param_key_one" to "hey3"))%token%resolves from local[[tokenizedReplacement]]%global.token%resolves from mapper global replacements- local blocks cannot define
global.*keys - token placeholders must be quoted (
"%token%")
Constant replacement resolves quoted keys like "obj.shark" using ConstantProvider.
ConstantProvider.load(File("..."))[[config]]
settings = 90
[config.params]
"obj.shark" = 34With enableConstantProvider(), "obj.shark" is replaced by its numeric id before decode.
[[tokenizedReplacement]]
param_key_two = "obj.shark"
[[config]]
settings = 345
[config.params]
"%param_key_two%" = "%global.param_key_one%"enabledTokenizedReplacement(mapOf("param_key_one" to "hey3"))
enableConstantProvider()Result after preprocessing:
[config.params]
"385" = "hey3"