12
0

Add number TabCompleting

Dieser Commit ist enthalten in:
jojo 2020-12-28 11:34:43 +01:00
Ursprung b6e4147af4
Commit b3fffe398a
3 geänderte Dateien mit 24 neuen und 9 gelöschten Zeilen

Datei anzeigen

@ -71,8 +71,12 @@ public class Argument<T> {
public Optional<List<String>> tabCompleteSupplier(String s) {
try {
// Check if mappable
if (!s.isEmpty()) argumentType.mapper.apply(s);
if (!s.isEmpty()) {
// Check if mappable
T argumentMapped = argumentType.mapper.apply(s);
// Check number constraints if needed
if (argumentType.number && !constraint.test(argumentMapped)) return Optional.empty();
}
List<String> strings = Arrays.stream(tabCompletes).filter(t -> t.startsWith(s)).collect(Collectors.toList());
if (strings.isEmpty()) strings.add(s);
return Optional.of(strings);

Datei anzeigen

@ -25,16 +25,18 @@ import java.util.function.Function;
public class ArgumentType<T> {
public static final ArgumentType<Integer> INT = new ArgumentType<>(Integer::parseInt);
public static final ArgumentType<Long> LONG = new ArgumentType<>(Long::parseLong);
public static final ArgumentType<Float> FLOAT = new ArgumentType<>(Float::parseFloat);
public static final ArgumentType<Double> DOUBLE = new ArgumentType<>(Double::parseDouble);
public static final ArgumentType<String> STRING = new ArgumentType<>((s) -> s);
public static final ArgumentType<Integer> INT = new ArgumentType<>(Integer::parseInt, true);
public static final ArgumentType<Long> LONG = new ArgumentType<>(Long::parseLong, true);
public static final ArgumentType<Float> FLOAT = new ArgumentType<>(Float::parseFloat, true);
public static final ArgumentType<Double> DOUBLE = new ArgumentType<>(Double::parseDouble, true);
public static final ArgumentType<String> STRING = new ArgumentType<>((s) -> s, false);
Function<String, T> mapper;
boolean number;
private ArgumentType(Function<String, T> mapper) {
private ArgumentType(Function<String, T> mapper, boolean number) {
this.mapper = mapper;
this.number = number;
}
}

Datei anzeigen

@ -37,7 +37,7 @@ public class SWCommandBundle {
return this;
}
public SWCommandBundle add(SWCommandBundle swCommandBundle) {
public SWCommandBundle addAll(SWCommandBundle swCommandBundle) {
if (swCommandBundle == null) return this;
swCommandList.addAll(swCommandBundle.swCommandList);
return this;
@ -51,4 +51,13 @@ public class SWCommandBundle {
return Optional.empty();
}
public List<String> tabComplete(String[] args) {
List<String> strings = new ArrayList<>();
for (SWCommand swCommand : swCommandList) {
Optional<List<String>> tabCompletes = swCommand.tabComplete(args);
if (tabCompletes.isPresent()) strings.addAll(tabCompletes.get());
}
return strings;
}
}