Automatically add range to config comments
This commit is contained in:
parent
448d996a45
commit
252b94a110
1 changed files with 17 additions and 2 deletions
|
@ -54,6 +54,7 @@ import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.ObjectArrays;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Like {@link com.electronwill.nightconfig.core.ConfigSpec} except in builder format, and extended to acept comments, language keys,
|
* Like {@link com.electronwill.nightconfig.core.ConfigSpec} except in builder format, and extended to acept comments, language keys,
|
||||||
|
@ -247,6 +248,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<Config>
|
||||||
public <V extends Comparable<? super V>> ConfigValue<V> defineInRange(List<String> path, Supplier<V> defaultSupplier, V min, V max, Class<V> clazz) {
|
public <V extends Comparable<? super V>> ConfigValue<V> defineInRange(List<String> path, Supplier<V> defaultSupplier, V min, V max, Class<V> clazz) {
|
||||||
Range<V> range = new Range<>(clazz, min, max);
|
Range<V> range = new Range<>(clazz, min, max);
|
||||||
context.setRange(range);
|
context.setRange(range);
|
||||||
|
context.setComment(ObjectArrays.concat(context.getComment(), "Range: " + range.toString()));
|
||||||
if (min.compareTo(max) > 0)
|
if (min.compareTo(max) > 0)
|
||||||
throw new IllegalArgumentException("Range min most be less then max.");
|
throw new IllegalArgumentException("Range min most be less then max.");
|
||||||
return define(path, defaultSupplier, range);
|
return define(path, defaultSupplier, range);
|
||||||
|
@ -539,7 +541,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<Config>
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private static class Range<V extends Comparable<? super V>> implements Predicate<Object>
|
private static class Range<V extends Comparable<? super V>> implements Predicate<Object>
|
||||||
{
|
{
|
||||||
private final Class<V> clazz;
|
private final Class<? extends V> clazz;
|
||||||
private final V min;
|
private final V min;
|
||||||
private final V max;
|
private final V max;
|
||||||
|
|
||||||
|
@ -550,7 +552,7 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<Config>
|
||||||
this.max = max;
|
this.max = max;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<V> getClazz() { return clazz; }
|
public Class<? extends V> getClazz() { return clazz; }
|
||||||
public V getMin() { return min; }
|
public V getMin() { return min; }
|
||||||
public V getMax() { return max; }
|
public V getMax() { return max; }
|
||||||
|
|
||||||
|
@ -561,6 +563,19 @@ public class ForgeConfigSpec extends UnmodifiableConfigWrapper<Config>
|
||||||
V c = clazz.cast(t);
|
V c = clazz.cast(t);
|
||||||
return c.compareTo(min) >= 0 && c.compareTo(max) <= 0;
|
return c.compareTo(min) >= 0 && c.compareTo(max) <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
if (clazz == Integer.class) {
|
||||||
|
if (max.equals(Integer.MAX_VALUE)) {
|
||||||
|
return "> " + min;
|
||||||
|
} else if (min.equals(Integer.MIN_VALUE)) {
|
||||||
|
return "< " + max;
|
||||||
|
}
|
||||||
|
} // TODO add more special cases?
|
||||||
|
return min + " ~ " + max;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ValueSpec
|
public static class ValueSpec
|
||||||
|
|
Loading…
Reference in a new issue