From 7d0d912963de66737721742d3d8e86d4fed85b8d Mon Sep 17 00:00:00 2001 From: rozhur Date: Tue, 18 Jul 2023 02:20:48 +0500 Subject: [PATCH] Add 'size()' method and 'Boolean' getters --- .../java/org/zhdev/config/ConfigSection.java | 12 +++++ .../org/zhdev/config/MapConfigSection.java | 47 ++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/io/src/main/java/org/zhdev/config/ConfigSection.java b/io/src/main/java/org/zhdev/config/ConfigSection.java index 722f83b..e639c83 100644 --- a/io/src/main/java/org/zhdev/config/ConfigSection.java +++ b/io/src/main/java/org/zhdev/config/ConfigSection.java @@ -5,6 +5,8 @@ import java.util.Map; import java.util.function.Function; public interface ConfigSection extends Iterable { + int size(); + String[] getBlockComments(String key); String[] getInlineComments(String key); @@ -103,6 +105,16 @@ public interface ConfigSection extends Iterable { String getOrSetString(String key, Function fallback, String... blockComments); + Boolean getBoolean(String key); + + Boolean getBoolean(String key, Boolean fallback); + + Boolean getBoolean(String key, Function fallback); + + Boolean getOrSetBoolean(String key, Boolean fallback, String... blockComments); + + Boolean getOrSetBoolean(String key, Function fallback, String... blockComments); + List getList(String key); List getList(String key, List fallback); diff --git a/io/src/main/java/org/zhdev/config/MapConfigSection.java b/io/src/main/java/org/zhdev/config/MapConfigSection.java index 96c3851..0fc7668 100644 --- a/io/src/main/java/org/zhdev/config/MapConfigSection.java +++ b/io/src/main/java/org/zhdev/config/MapConfigSection.java @@ -6,7 +6,7 @@ import java.util.function.Function; public class MapConfigSection implements ConfigSection { protected final LinkedHashMap map; - protected MapConfigSection(LinkedHashMap map) {; + protected MapConfigSection(LinkedHashMap map) { this.map = map; } @@ -397,6 +397,47 @@ public class MapConfigSection implements ConfigSection { return object; } + @Override + public Boolean getBoolean(String key) { + Object object = get(key); + if (object instanceof Boolean) { + return (Boolean) object; + } + return object == null ? null : Boolean.getBoolean(object.toString()); + } + + @Override + public Boolean getBoolean(String key, Boolean fallback) { + Boolean object = getBoolean(key); + return object == null ? fallback : object; + } + + @Override + public Boolean getBoolean(String key, Function fallback) { + Boolean object = getBoolean(key); + return object == null ? fallback.apply(key) : object; + } + + @Override + public Boolean getOrSetBoolean(String key, Boolean fallback, String... blockComments) { + Boolean object = getBoolean(key); + if (object == null) { + map.put(key, new ConfigSectionNode(fallback, blockComments)); + return fallback; + } + return object; + } + + @Override + public Boolean getOrSetBoolean(String key, Function fallback, String... blockComments) { + Boolean object = getBoolean(key); + if (object == null) { + object = fallback.apply(key); + map.put(key, new ConfigSectionNode(object, blockComments)); + } + return object; + } + public List getList(String key) { Object object = get(key); return object instanceof List ? (List) object : null; @@ -458,6 +499,10 @@ public class MapConfigSection implements ConfigSection { return (T) map.remove(key); } + public int size() { + return map.size(); + } + public void clear() { map.clear(); }