aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/api/utils
diff options
context:
space:
mode:
authorXander <xander@isxander.dev>2022-12-09 16:31:25 +0000
committerGitHub <noreply@github.com>2022-12-09 16:31:25 +0000
commite4856a17133b0567d09cb6db3821674491d57e64 (patch)
tree0c59597708b3ea9f402ba119490537b5c18fdb93 /src/client/java/dev/isxander/yacl/api/utils
parente1f6d190d862dd86c251fdd5726efe99f8ec1baf (diff)
parent49ff470de36e719d5b963de405de891eca2b69d1 (diff)
downloadYetAnotherConfigLib-e4856a17133b0567d09cb6db3821674491d57e64.tar.gz
YetAnotherConfigLib-e4856a17133b0567d09cb6db3821674491d57e64.tar.bz2
YetAnotherConfigLib-e4856a17133b0567d09cb6db3821674491d57e64.zip
Merge pull request #38 from isXander/update/1.19.3
Diffstat (limited to 'src/client/java/dev/isxander/yacl/api/utils')
-rw-r--r--src/client/java/dev/isxander/yacl/api/utils/OptionUtils.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/client/java/dev/isxander/yacl/api/utils/OptionUtils.java b/src/client/java/dev/isxander/yacl/api/utils/OptionUtils.java
new file mode 100644
index 0000000..ab46b5b
--- /dev/null
+++ b/src/client/java/dev/isxander/yacl/api/utils/OptionUtils.java
@@ -0,0 +1,37 @@
+package dev.isxander.yacl.api.utils;
+
+import dev.isxander.yacl.api.ConfigCategory;
+import dev.isxander.yacl.api.Option;
+import dev.isxander.yacl.api.OptionGroup;
+import dev.isxander.yacl.api.YetAnotherConfigLib;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+public class OptionUtils {
+ /**
+ * Consumes all options, ignoring groups and categories.
+ * When consumer returns true, this function stops iterating.
+ */
+ public static void consumeOptions(YetAnotherConfigLib yacl, Function<Option<?>, Boolean> consumer) {
+ for (ConfigCategory category : yacl.categories()) {
+ for (OptionGroup group : category.groups()) {
+ for (Option<?> option : group.options()) {
+ if (consumer.apply(option)) return;
+ }
+ }
+ }
+ }
+
+ /**
+ * Consumes all options, ignoring groups and categories.
+ *
+ * @see OptionUtils#consumeOptions(YetAnotherConfigLib, Function)
+ */
+ public static void forEachOptions(YetAnotherConfigLib yacl, Consumer<Option<?>> consumer) {
+ consumeOptions(yacl, (opt) -> {
+ consumer.accept(opt);
+ return false;
+ });
+ }
+}