๐Ÿ› Make number argument suggestions respect minimum

This commit is contained in:
jmp 2020-10-13 13:38:12 -07:00
parent 78796255a2
commit 15526c95ed

View file

@ -192,20 +192,27 @@ public final class IntegerArgument<C> extends CommandArgument<C, Integer> {
static @NonNull List<@NonNull String> getSuggestions(final long min, final long max, final @NonNull String input) { static @NonNull List<@NonNull String> getSuggestions(final long min, final long max, final @NonNull String input) {
if (input.isEmpty()) { if (input.isEmpty()) {
return IntStream.range(0, MAX_SUGGESTIONS_INCREMENT).mapToObj(Integer::toString).collect(Collectors.toList()); return IntStream.range(0, MAX_SUGGESTIONS_INCREMENT).mapToObj(Integer::toString).collect(Collectors.toList());
} else if (input.equals("-")) {
return IntStream
.range((MAX_SUGGESTIONS_INCREMENT - 1) * -1, 0)
.mapToObj(Integer::toString)
.collect(Collectors.toList());
} }
try { try {
final long inputNum = Long.parseLong(input); final long inputNum = Long.parseLong(input);
if (inputNum > max) { if (inputNum > max) {
return Collections.emptyList(); return Collections.emptyList();
} else {
final List<String> suggestions = new LinkedList<>();
suggestions.add(input); /* It's a valid number, so we suggest it */
for (int i = 0; i < MAX_SUGGESTIONS_INCREMENT
&& (inputNum * NUMBER_SHIFT_MULTIPLIER) + i <= max; i++) {
suggestions.add(Long.toString((inputNum * NUMBER_SHIFT_MULTIPLIER) + i));
}
return suggestions;
} }
if (inputNum < min) {
return Collections.emptyList();
}
final List<String> suggestions = new LinkedList<>();
suggestions.add(input); /* It's a valid number, so we suggest it */
for (int i = 0; i < MAX_SUGGESTIONS_INCREMENT
&& (inputNum * NUMBER_SHIFT_MULTIPLIER) + i <= max; i++) {
suggestions.add(Long.toString((inputNum * NUMBER_SHIFT_MULTIPLIER) + i));
}
return suggestions;
} catch (final Exception ignored) { } catch (final Exception ignored) {
return Collections.emptyList(); return Collections.emptyList();
} }