First attempt at fixing quoted string oddities.

Dieser Commit ist enthalten in:
wizjany 2019-07-04 01:48:55 -04:00
Ursprung 508ece9e0f
Commit 96e2b6c5af
2 geänderte Dateien mit 29 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -42,6 +42,7 @@ import com.sk89q.worldedit.internal.registry.InputParser;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* A registry of known {@link Mask}s. Provides methods to instantiate
@ -74,6 +75,16 @@ public final class MaskFactory extends AbstractFactory<Mask> {
register(new BiomeMaskParser(worldEdit));
}
@Override
public List<String> getSuggestions(String input) {
final String[] split = input.split(" ");
if (split.length > 1) {
String prev = input.substring(0, input.lastIndexOf(" ")) + " ";
return super.getSuggestions(split[split.length -1]).stream().map(s -> prev + s).collect(Collectors.toList());
}
return super.getSuggestions(input);
}
@Override
public Mask parseFromInput(String input, ParserContext context) throws InputParseException {
List<Mask> masks = new ArrayList<>();

Datei anzeigen

@ -67,16 +67,28 @@ public class CommandArgParser {
handleQuote(nextPart);
}
}
if (currentArg.size() > 0) {
finishArg(); // force finish "hanging" args
}
return args.build();
}
private void handleNormal(Substring part) {
if (part.getSubstring().startsWith("\"")) {
state = State.QUOTE;
currentArg.add(Substring.wrap(
part.getSubstring().substring(1),
part.getStart(), part.getEnd()
));
final String strPart = part.getSubstring();
if (strPart.startsWith("\"")) {
if (strPart.endsWith("\"") && strPart.length() > 1) {
currentArg.add(Substring.wrap(
strPart.substring(1, strPart.length() - 1),
part.getStart(), part.getEnd()
));
finishArg();
} else {
state = State.QUOTE;
currentArg.add(Substring.wrap(
strPart.substring(1),
part.getStart(), part.getEnd()
));
}
} else {
currentArg.add(part);
finishArg();