Clean up StringParser

This commit is contained in:
Jason Penilla 2021-07-04 20:53:46 -07:00 committed by Jason
parent d6e17a0d99
commit 75e59c9fe6

View file

@ -311,6 +311,16 @@ public final class StringArgument<C> extends CommandArgument<C, String> {
inputQueue.remove(); inputQueue.remove();
return ArgumentParseResult.success(input); return ArgumentParseResult.success(input);
} else if (this.stringMode == StringMode.QUOTED) { } else if (this.stringMode == StringMode.QUOTED) {
return this.parseQuoted(commandContext, inputQueue);
} else {
return this.parseGreedy(commandContext, inputQueue);
}
}
private @NonNull ArgumentParseResult<String> parseQuoted(
final @NonNull CommandContext<C> commandContext,
final @NonNull Queue<@NonNull String> inputQueue
) {
final StringJoiner sj = new StringJoiner(" "); final StringJoiner sj = new StringJoiner(" ");
for (final String string : inputQueue) { for (final String string : inputQueue) {
sj.add(string); sj.add(string);
@ -358,15 +368,15 @@ public final class StringArgument<C> extends CommandArgument<C, String> {
return ArgumentParseResult.success(inner); return ArgumentParseResult.success(inner);
} }
private @NonNull ArgumentParseResult<String> parseGreedy(
final @NonNull CommandContext<C> commandContext,
final @NonNull Queue<@NonNull String> inputQueue
) {
final StringJoiner sj = new StringJoiner(" "); final StringJoiner sj = new StringJoiner(" ");
final int size = inputQueue.size(); final int size = inputQueue.size();
boolean started = false;
boolean finished = false;
char start = ' ';
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
String string = inputQueue.peek(); final String string = inputQueue.peek();
if (string == null) { if (string == null) {
break; break;