diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java index 5764a43b..179e8bc5 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java @@ -34,9 +34,11 @@ import cloud.commandframework.exceptions.parsing.NoInputProvidedException; import cloud.commandframework.exceptions.parsing.ParserException; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.Queue; import java.util.function.BiFunction; +import java.util.stream.Collectors; import org.apiguardian.api.API; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -162,10 +164,16 @@ public final class BooleanArgument extends CommandArgument { @API(status = API.Status.STABLE) public static final class BooleanParser implements ArgumentParser { + private static final List STRICT = Arrays.asList("TRUE", "FALSE"); private static final List LIBERAL = Arrays.asList("TRUE", "YES", "ON", "FALSE", "NO", "OFF"); private static final List LIBERAL_TRUE = Arrays.asList("TRUE", "YES", "ON"); private static final List LIBERAL_FALSE = Arrays.asList("FALSE", "NO", "OFF"); + private static final List STRICT_LOWER = STRICT + .stream().map(s -> s.toLowerCase(Locale.ROOT)).collect(Collectors.toList()); + private static final List LIBERAL_LOWER = LIBERAL + .stream().map(s -> s.toLowerCase(Locale.ROOT)).collect(Collectors.toList()); + private final boolean liberal; /** @@ -225,10 +233,10 @@ public final class BooleanArgument extends CommandArgument { final @NonNull String input ) { if (!this.liberal) { - return Arrays.asList("TRUE", "FALSE"); + return STRICT_LOWER; } - return LIBERAL; + return LIBERAL_LOWER; } @Override diff --git a/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java b/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java index 3fb63e6f..f5bff39f 100644 --- a/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java @@ -148,8 +148,8 @@ class BooleanParserTest { static Stream Suggestions_ExpectedSuggestions_Source() { return Stream.of( - Arguments.arguments(false, ArgumentTestHelper.linkedListOf("TRUE", "FALSE")), - Arguments.arguments(true, ArgumentTestHelper.linkedListOf("TRUE", "YES", "ON", "FALSE", "NO", "OFF")) + Arguments.arguments(false, ArgumentTestHelper.linkedListOf("true", "false")), + Arguments.arguments(true, ArgumentTestHelper.linkedListOf("true", "yes", "on", "false", "no", "off")) ); } }