Skip to content
Permalink
Browse files

First attempt at fixing quoted string oddities.

  • Loading branch information...
wizjany committed Jul 4, 2019
1 parent 508ece9 commit 96e2b6c5af6861f0d57c2dc0bee799bb7a981c17
@@ -42,6 +42,7 @@

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 MaskFactory(WorldEdit worldEdit) {
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 CommandArgParser(List<Substring> input) {
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();

0 comments on commit 96e2b6c

Please sign in to comment.
You can’t perform that action at this time.