Skip to content

Commit 9fce7f3

Browse files
added a default ValuesSuggester implementation
1 parent 427be21 commit 9fce7f3

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

commands/src/main/java/com/wizardlybump17/wlib/command/suggestion/Suggester.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.jetbrains.annotations.NotNull;
77

88
import java.util.List;
9+
import java.util.function.Function;
910

1011
public interface Suggester<T> {
1112

@@ -18,4 +19,12 @@ public interface Suggester<T> {
1819
default boolean needsEscape() {
1920
return false;
2021
}
22+
23+
static <T> ValuesSuggester.@NotNull Values<T> values(@NotNull List<T> values, @NotNull Function<T, String> stringRepresentation) {
24+
return new ValuesSuggester.Values<>(values, stringRepresentation);
25+
}
26+
27+
static <T> ValuesSuggester.@NotNull Values<T> values(@NotNull List<T> values) {
28+
return new ValuesSuggester.Values<>(values);
29+
}
2130
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,51 @@
11
package com.wizardlybump17.wlib.command.suggestion;
22

3+
import com.wizardlybump17.wlib.command.exception.SuggesterException;
4+
import com.wizardlybump17.wlib.command.node.CommandNode;
5+
import com.wizardlybump17.wlib.command.sender.CommandSender;
36
import org.jetbrains.annotations.NotNull;
7+
import org.jetbrains.annotations.Nullable;
8+
import org.jetbrains.annotations.Unmodifiable;
49

510
import java.util.List;
11+
import java.util.function.Function;
612

713
public interface ValuesSuggester<T> extends Suggester<T> {
814

915
@NotNull List<T> values();
16+
17+
final class Values<T> implements ValuesSuggester<T> {
18+
19+
private final @NotNull List<T> values;
20+
private final @Nullable Function<T, String> stringRepresentationFunction;
21+
22+
Values(@NotNull List<T> values, @NotNull Function<T, String> stringRepresentationFunction) {
23+
this.values = List.copyOf(values);
24+
this.stringRepresentationFunction = stringRepresentationFunction;
25+
}
26+
27+
Values(@NotNull List<T> values) {
28+
this.values = List.copyOf(values);
29+
stringRepresentationFunction = null;
30+
}
31+
32+
@Override
33+
public @NotNull @Unmodifiable List<T> values() {
34+
return values;
35+
}
36+
37+
public @Nullable Function<T, String> stringRepresentation() {
38+
return stringRepresentationFunction;
39+
}
40+
41+
@Override
42+
public @NotNull List<T> getSuggestions(@NotNull CommandSender<?> sender, @NotNull List<String> input, @NotNull String current, @NotNull CommandNode<?> currentNode) throws SuggesterException {
43+
return values;
44+
}
45+
46+
@Override
47+
public @NotNull String getStringRepresentation(@NotNull T value) {
48+
return stringRepresentationFunction == null ? ValuesSuggester.super.getStringRepresentation(value) : stringRepresentationFunction.apply(value);
49+
}
50+
}
1051
}

0 commit comments

Comments
 (0)