aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl3/api/OptionAddable.java
diff options
context:
space:
mode:
authorisxander <xander@isxander.dev>2024-04-11 18:43:06 +0100
committerisxander <xander@isxander.dev>2024-04-11 18:43:06 +0100
commit04fe933f4c24817100f3101f088accf55a621f8a (patch)
treefeff94ca3ab4484160e69a24f4ee38522381950e /src/main/java/dev/isxander/yacl3/api/OptionAddable.java
parent831b894fdb7fe3e173d81387c8f6a2402b8ccfa9 (diff)
downloadYetAnotherConfigLib-04fe933f4c24817100f3101f088accf55a621f8a.tar.gz
YetAnotherConfigLib-04fe933f4c24817100f3101f088accf55a621f8a.tar.bz2
YetAnotherConfigLib-04fe933f4c24817100f3101f088accf55a621f8a.zip
Extremely fragile and broken multiversion build with stonecutter
Diffstat (limited to 'src/main/java/dev/isxander/yacl3/api/OptionAddable.java')
-rw-r--r--src/main/java/dev/isxander/yacl3/api/OptionAddable.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/main/java/dev/isxander/yacl3/api/OptionAddable.java b/src/main/java/dev/isxander/yacl3/api/OptionAddable.java
new file mode 100644
index 0000000..606e8ca
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl3/api/OptionAddable.java
@@ -0,0 +1,51 @@
+package dev.isxander.yacl3.api;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collection;
+import java.util.function.Supplier;
+
+public interface OptionAddable {
+ /**
+ * Adds an option to an abstract builder.
+ * To construct an option, use {@link Option#createBuilder()}
+ */
+ OptionAddable option(@NotNull Option<?> option);
+
+ /**
+ * Adds an option to an abstract builder.
+ * To construct an option, use {@link Option#createBuilder()}
+ * @param optionSupplier to be called to initialise the option. called immediately
+ */
+ default OptionAddable option(@NotNull Supplier<@NotNull Option<?>> optionSupplier) {
+ return option(optionSupplier.get());
+ }
+
+ /**
+ * Adds an option to an abstract builder if a condition is met.
+ * To construct an option, use {@link Option#createBuilder()}
+ * @param condition only if true is the option added
+ * @param option the option to add
+ * @return this
+ */
+ default OptionAddable optionIf(boolean condition, @NotNull Option<?> option) {
+ return condition ? option(option) : this;
+ }
+
+ /**
+ * Adds an option to an abstract builder if a condition is met.
+ * To construct an option, use {@link Option#createBuilder()}
+ * @param condition only if true is the option added
+ * @param optionSupplier to be called to initialise the option. called immediately only if condition is true
+ * @return this
+ */
+ default OptionAddable optionIf(boolean condition, @NotNull Supplier<@NotNull Option<?>> optionSupplier) {
+ return condition ? option(optionSupplier) : this;
+ }
+
+ /**
+ * Adds multiple options to an abstract builder.
+ * To construct an option, use {@link Option#createBuilder()}
+ */
+ OptionAddable options(@NotNull Collection<? extends Option<?>> options);
+}