geforkt von Mirrors/FastAsyncWorldEdit
Some small improvements to value flags, and a unit test.
Dieser Commit ist enthalten in:
Ursprung
6cdfd86f0b
Commit
75e843b965
@ -85,9 +85,7 @@ public class CommandContext {
|
|||||||
// Then flags
|
// Then flags
|
||||||
for (int i = 1; i < args.length; ++i) {
|
for (int i = 1; i < args.length; ++i) {
|
||||||
final String arg = args[i];
|
final String arg = args[i];
|
||||||
if (arg.charAt(0) != '-') {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arg.equals("--")) {
|
if (arg.equals("--")) {
|
||||||
args = removePortionOfArray(args, i, i, null);
|
args = removePortionOfArray(args, i, i, null);
|
||||||
@ -95,28 +93,26 @@ public class CommandContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!arg.matches("^-[a-zA-Z]+$")) {
|
if (!arg.matches("^-[a-zA-Z]+$")) {
|
||||||
throw new CommandException("Invalid flag character given.");
|
continue;
|
||||||
}
|
}
|
||||||
|
int index = i;
|
||||||
for (int k = 1; k < arg.length(); ++k) {
|
for (int k = 1; k < arg.length(); ++k) {
|
||||||
final char flagName = arg.charAt(k);
|
final char flagName = arg.charAt(k);
|
||||||
if (valueFlags.contains(flagName)) {
|
if (valueFlags.contains(flagName)) {
|
||||||
if (this.valueFlags.containsKey(flagName)) {
|
if (this.valueFlags.containsKey(flagName)) {
|
||||||
throw new CommandException("Value flag '" + flagName + "' already given");
|
throw new CommandException("Value flag '" + flagName + "' already given");
|
||||||
}
|
}
|
||||||
|
index++;
|
||||||
final int index = i + 1;
|
|
||||||
if (index >= args.length) {
|
if (index >= args.length) {
|
||||||
throw new CommandException("Value flag '" + flagName + "' specified without value");
|
throw new CommandException("Value flag '" + flagName + "' specified without value");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.valueFlags.put(flagName, args[index]);
|
this.valueFlags.put(flagName, args[index]);
|
||||||
args = removePortionOfArray(args, index, index, null);
|
|
||||||
} else {
|
} else {
|
||||||
booleanFlags.add(flagName);
|
booleanFlags.add(flagName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
args = removePortionOfArray(args, i, i, null);
|
args = removePortionOfArray(args, i, index, null);
|
||||||
}
|
}
|
||||||
this.args = args;
|
this.args = args;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package com.sk89q.minecraft.util.commands;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
public class CommandContextTest {
|
||||||
|
final String firstCmdString = "herpderp -opw testers \"mani world\" 'another thing' because something";
|
||||||
|
CommandContext firstCommand;
|
||||||
|
CommandContext secondCommand;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUpTest(){
|
||||||
|
try {
|
||||||
|
firstCommand = new CommandContext(firstCmdString, new HashSet<Character>(Arrays.asList('o', 'w')));
|
||||||
|
} catch (CommandException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = CommandException.class)
|
||||||
|
public void testInvalidFlags() throws CommandException {
|
||||||
|
String failingCommand = "herpderp -opw testers";
|
||||||
|
new CommandContext(failingCommand, new HashSet<Character>(Arrays.asList('o', 'w')));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren