33 lines
1.2 KiB
Java
33 lines
1.2 KiB
Java
package io.gitlab.jfronny.libjf.config.api.v1.dsl;
|
|
|
|
import io.gitlab.jfronny.libjf.config.api.v1.ConfigHolder;
|
|
import io.gitlab.jfronny.libjf.config.api.v1.ConfigInstance;
|
|
import io.gitlab.jfronny.libjf.config.impl.dsl.DSLImpl;
|
|
|
|
/**
|
|
* An interface to allow easy creation or registration of configs
|
|
*/
|
|
public interface DSL {
|
|
static DSL create() {
|
|
return new DSLImpl();
|
|
}
|
|
|
|
static DSL.Defaulted create(String defaultId) {
|
|
return new DSLImpl.Defaulted(defaultId);
|
|
}
|
|
|
|
ConfigInstance config(String configId, ConfigBuilder.ConfigBuilderFunction builder);
|
|
ConfigInstance register(String configId, ConfigBuilder.ConfigBuilderFunction builder);
|
|
ConfigInstance register(ConfigHolder config, String configId, ConfigBuilder.ConfigBuilderFunction builder);
|
|
|
|
/**
|
|
* A sub-interface of DSL with a default ID and override methods using said ID.
|
|
* Passed to entrypoints, so they don't need to specify their ID in code manually.
|
|
*/
|
|
interface Defaulted extends DSL {
|
|
ConfigInstance config(ConfigBuilder.ConfigBuilderFunction builder);
|
|
ConfigInstance register(ConfigBuilder.ConfigBuilderFunction builder);
|
|
ConfigInstance register(ConfigHolder config, ConfigBuilder.ConfigBuilderFunction builder);
|
|
}
|
|
}
|