Add 'size()' method and 'Boolean' getters

This commit is contained in:
Roman Zhuravlev 2023-07-18 02:20:48 +05:00
parent cb3d54c361
commit 7d0d912963
2 changed files with 58 additions and 1 deletions

View file

@ -5,6 +5,8 @@ import java.util.Map;
import java.util.function.Function;
public interface ConfigSection extends Iterable<String> {
int size();
String[] getBlockComments(String key);
String[] getInlineComments(String key);
@ -103,6 +105,16 @@ public interface ConfigSection extends Iterable<String> {
String getOrSetString(String key, Function<String, String> fallback, String... blockComments);
Boolean getBoolean(String key);
Boolean getBoolean(String key, Boolean fallback);
Boolean getBoolean(String key, Function<String, Boolean> fallback);
Boolean getOrSetBoolean(String key, Boolean fallback, String... blockComments);
Boolean getOrSetBoolean(String key, Function<String, Boolean> fallback, String... blockComments);
List<?> getList(String key);
List<?> getList(String key, List<?> fallback);

View file

@ -6,7 +6,7 @@ import java.util.function.Function;
public class MapConfigSection implements ConfigSection {
protected final LinkedHashMap<String, ConfigSectionNode> map;
protected MapConfigSection(LinkedHashMap<String, ConfigSectionNode> map) {;
protected MapConfigSection(LinkedHashMap<String, ConfigSectionNode> 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<String, Boolean> 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<String, Boolean> 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();
}