geforkt von Mirrors/FastAsyncWorldEdit
First attempt at fixing quoted string oddities.
Dieser Commit ist enthalten in:
Ursprung
508ece9e0f
Commit
96e2b6c5af
@ -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<>();
|
||||
|
@ -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();
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren