From 04fe933f4c24817100f3101f088accf55a621f8a Mon Sep 17 00:00:00 2001 From: isxander Date: Thu, 11 Apr 2024 18:43:06 +0100 Subject: Extremely fragile and broken multiversion build with stonecutter --- .../java/dev/isxander/yacl3/api/OptionAddable.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/dev/isxander/yacl3/api/OptionAddable.java (limited to 'src/main/java/dev/isxander/yacl3/api/OptionAddable.java') 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> options); +} -- cgit